Regexp - шпаргалка по регулярным выражениям

Тема в разделе "Решение различных задач по парсингу", создана пользователем kagorec, 19 мар 2012.

  1. Grushe

    Grushe New Member Пользователи

    Регистрация:
    10 апр 2014
    Сообщения:
    40
    Подскажите, пожалуйста, регулярное выражение, когда из текста забирается все адреса (домены), нужен аналог EXTRACTEMAILS и EXTRACTPHONES только для сайтов. Либо есть ли такой аналог?
     
  2. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.022
    Город:
    Riga
    Код:
    re:^.* ([^\s]+)$|$1
    Или стандартным макросом get
    Код:
     {get}|{get}
    спереди есть пробел
     
    myst87 нравится это.
  3. mur

    mur New Member Пользователи

    Регистрация:
    5 июн 2014
    Сообщения:
    38
    пересмотрел всю ветку, но не нашел как добавить тысячные разделитель к цифрами

    например пробел

    1000|1 000
    12000|12 000
    9999999|9 999 999

    Подскажите регулярку
     
  4. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.022
    Город:
    Riga
    Примерно так для разбивки тройных чисел от концовки к началу добавляя пробелы.
    Код:
    [LINEMODE]re:([\d]{0,3})([\d]{3})([\d]{3})$| $1 $2 $3
    [LINEMODE]re:([\d]{1,3})([\d]{3})$|$1 $2
    [LINEMODE]re:([\d]{3})$|$1
    [LINEMODE][CLEARSPACES]
     
    mur нравится это.
  5. rusalex

    rusalex Active Member Пользователи

    Регистрация:
    22 мар 2018
    Сообщения:
    131
    Город:
    Kiev
    Подскажите есть регулярное выражение преобразования Десятичных кодов HTML в обычныек символы?
    В частности rdquo; quot; и подобные?

    Возможно есть макрос о котором я не знаю? Буду очень признателен за помощь.
     
  6. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.022
    Город:
    Riga
    Скорее всего поможет макрос {htmldecode}

    [​IMG]
     
    rusalex нравится это.
  7. rusalex

    rusalex Active Member Пользователи

    Регистрация:
    22 мар 2018
    Сообщения:
    131
    Город:
    Kiev
    Супер - Это то, что искал!! Спасибо! Только это макрос на главной панели! Спасибо еще раз, а то Гугл тексты с такими символами уже не переводит, выдает ошибку.
     
  8. sinoda

    sinoda New Member Пользователи

    Регистрация:
    10 фев 2012
    Сообщения:
    22
    Город:
    Москва
    Здравствуйте, подскажите пожалуйста, вот регулярка:
    re:^.{5,}?\s+)|$1+
    добавляет после любого 5 символа и следующего после него пробела знак +
    но если символов меньше - то она уже не работает.
    Есть ли возможность (условие), что если символов меньше обязательных 5, то после последнего пробела (или даже без привязки к последнему пробелу - условно в конец) ставить знак + ???
    На уме только способ "незнайки регулярок":
    re:^.{5,}?\s+)|$1+
    re:^.{4,}?\s+)|$1+
    re:^.{3,}?\s+)|$1+
    и т.д.
    Может есть способ покороче ?
    Знаю про макрос <SHORT len="5" end=" " //><CD_GRAN_1!></SHORT>+
    но этот вариант обрезает, а мне нужна именно вставка в строку после энного кол-ва символов.
    И еще почему-то регулярки обрабатывают только первую строку,
    раньше вроде бы все строки обрабатывались.
     

    Вложения:

    Последнее редактирование: 22 окт 2020
  9. rusalex

    rusalex Active Member Пользователи

    Регистрация:
    22 мар 2018
    Сообщения:
    131
    Город:
    Kiev
    re:^.{1,4}?\s+)|$1+ ???
     
    sinoda нравится это.
  10. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.022
    Город:
    Riga
    Необходимо пример то что "есть" и "что" получить.
    Из написанного вами можно предположить что подойдет:
    Код:
    [LINEMODE]re:^([^\+]{4,7})\s|$1 +
    [LINEMODE]re:^([^\+]{1,7})$|$1+
    
     
    sinoda нравится это.
  11. sinoda

    sinoda New Member Пользователи

    Регистрация:
    10 фев 2012
    Сообщения:
    22
    Город:
    Москва
    Благодарю всех за помощь,
    первая строка [LINEMODE]re:^([^\+]{1,60})\s|$1 + решила вопрос !
    Но не могу понять почему без [LINEMODE] регулярка не работает.
    [LINEMODE] включает построчный режим для выбранных правил поиск замены, но ведь все регулярки которые я использавал раньше - работали в каждой строке без [LINEMODE]
     
    Последнее редактирование: 26 окт 2020
  12. Serheo

    Serheo Well-Known Member Пользователи

    Регистрация:
    13 окт 2018
    Сообщения:
    199
    Город:
    Москва
    Здравствуйте, гуру re: !

    Граница отдает как текст с пробелами, так и числа с пробелами. Как регуляркой убрать пробелы только между цифрами в числе, а между буквами оставить?
     
  13. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.022
    Город:
    Riga
    Приведите пример такого текста который надо обработать заменами.
     
  14. Serheo

    Serheo Well-Known Member Пользователи

    Регистрация:
    13 окт 2018
    Сообщения:
    199
    Город:
    Москва
    Цена товара 15 000 руб.

    Там у меня [DYNAMICVALUES], но суть от этого не меняется. Надо удалить пробелы только между 5 и 0, а остальные надо оставить.
     

Поделиться этой страницей