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

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

  1. Grushe

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

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

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

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

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

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

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

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

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

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    Примерно так для разбивки тройных чисел от концовки к началу добавляя пробелы.
    Код:
    [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
    Сообщения:
    133
    Город:
    Kiev
    Подскажите есть регулярное выражение преобразования Десятичных кодов HTML в обычныек символы?
    В частности rdquo; quot; и подобные?

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

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

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

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

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

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

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

    Регистрация:
    10 фев 2012
    Сообщения:
    55
    Город:
    Москва
    Здравствуйте, подскажите пожалуйста, вот регулярка:
    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
    Сообщения:
    133
    Город:
    Kiev
    re:^.{1,4}?\s+)|$1+ ???
     
    sinoda нравится это.
  10. kagorec

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

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

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

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

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

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

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

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

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

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

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

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

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

    Регистрация:
    12 фев 2018
    Сообщения:
    181
    Город:
    порт
    Подскажите как из списка чисел например: 123,123321,12321 и количество такого списка чисел может быть разный, выбрать только предпоследнее число?

    UPD нашел такую конструкцию, но как то не работает ((
    re:\d+(?=,+\d+$)
     
    Последнее редактирование: 19 дек 2020
  16. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Код:
    ,{skip}|
    ,{get}|{get}
    {break_if_not_nil}
    {reset_if_nil}
    ,{skip}|
     
    Achronis и strateg2010 нравится это.
  17. strateg2010

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

    Регистрация:
    12 фев 2018
    Сообщения:
    181
    Город:
    порт
    Спасибо работает, а можно расшифровку действий?
     
  18. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Ссылки недоступны для гостей
     
    Achronis нравится это.
  19. Frost57

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

    Регистрация:
    23 дек 2020
    Сообщения:
    1
    Город:
    Москва
    Отличная шпаргалка, спасибо большое
     
  20. sinoda

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

    Регистрация:
    10 фев 2012
    Сообщения:
    55
    Город:
    Москва
    Здравствуйте.
    Прошу помощи.
    Нужно очередность тегов разбить на строки.
    Т.е. </p><p> нужно регуляркой или поиск заменой перевести в
    </p>
    <p>
    Понятно что можно и без регулярки просто поиск заменой ><|><br><
    Тегом <br> не подходит, т.к. всё равно
    </p><br><p>
    остается в одной строке, а надо разделить на разные строки - перевести каретку на новую строку,.
    есть регулярное выражение
    re:><|>\n\r<
    которое срабатывает в notepad, а в ворде например это обрабатывает ^p
    но в CD регулярка не работает.
    Я нашел костыль, после импорта в вордпресс приходится делать экспорт таблицы из SQL базы
    открывать её NOTEPADом, править регуляркой и импортировать обратно. ( запросы поиск замена в phpMyAdmin тоже не обрабатывает эту регулярку)
    Но хотелось сделать всё проще, еще при обработке контента, там где все остальные регулярки срабатывают.
    Подскажите может я её не верно формулирую ?
     

    Вложения:

    Последнее редактирование: 29 янв 2021

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