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

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

  1. Mind

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

    Регистрация:
    8 ноя 2016
    Сообщения:
    190
    Совершенно верно, это и имелось в виду
     
  2. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Если универсальность неважна, примерно так тогда
    Код:
    re:<a href=image/files/[^"]+\.\w+">|
    [​IMG]
     
  3. Mind

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

    Регистрация:
    8 ноя 2016
    Сообщения:
    190
    Спасибо, Владимир! Но должна остаться ссылка с расширением, я писал выше
     
    kagorec нравится это.
  4. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    В поиск-замена
    Код:
    re:<a href=image/files/[^\.]+">|
    Из
    Код:
    <a href=image/files/regulyator-skorosti-rs-1-300_1">
    <a href=image/files/regulyator.jpg">
    Остается только
    Код:
    <a href=image/files/regulyator.jpg">
     
    Mind и Root нравится это.
  5. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Код:
    [DELTAGS:a(href=.jpg/|href=.png/),br,p]<a href="1.jpg"><a href="1.png"><a href="1">[/DELTAGS]
    Ссылки недоступны для гостей
     
    Mind нравится это.
  6. igggor

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

    Регистрация:
    21 мар 2018
    Сообщения:
    8
    2. Убрать всякие кавычки и ненужные символы в предложении:
    Код:
    re:[^A-Za-z0-9 а-яА-Я\.\,\?\!\'\"]+|

    Ошибка в инструкции - этот код уберет все буквы точки запятые и пр.
     
  7. Root

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

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

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Ошибка в вашем посте)

    [​IMG]
     
    Root нравится это.
  9. masrub

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

    Регистрация:
    29 июн 2018
    Сообщения:
    194
    Подскажите регулярное выражение на сравнение телефонов, нужно удалить дубли, если встречаются, пример:
    Текст 1[CSVCS]Телефон 1[CSVCS]Телефон 2[CSVCS]Текст 2
    ФИО1[CSVCS]-[CSVCS]+7(900)0000001[CSVCS]ФИО2
    ФИО3[CSVCS]+7(900)0000000[CSVCS]+7(900)0000000[CSVCS]ФИО4
    ФИО5[CSVCS]+7(900)0000002[CSVCS]-[CSVCS]ФИО6
    Во второй строке таблицы повторяется телефон +7(900)0000000 т.е. [CSVCS]+7(900)0000000[CSVCS]+7(900)0000000[CSVCS]
    Нужно удалить дубль, оставить 1 номер что бы все выглядело вот так [CSVCS]+7(900)0000000[CSVCS]-[CSVCS]
     
  10. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Используйте для этого макрос шаблона вывода [DUPIGNORE].

    Ссылки недоступны для гостей
     
  11. masrub

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

    Регистрация:
    29 июн 2018
    Сообщения:
    194
    Мне нужно в поиск замене сравнить телефоны что то должно получиться вот такого вида? {skip}[DUPIGNORE][CSVCS][KEY]{skip}[/KEY][CSVCS][KEY]{skip}[/KEY][CSVCS][/DUPIGNORE]
     
  12. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    В поиск-замене нет функции удаления дублей. Макрос удаления дублей [DUPIGNORE] используется отдельно от функций поиск-замены.
     
  13. masrub

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

    Регистрация:
    29 июн 2018
    Сообщения:
    194
    Вернусь к вопросу выше, как можно в функции поиск замена сравнить в двух местах телефоны? Есть какое либо регулярное выражение?
     
  14. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
     
  15. masrub

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

    Регистрация:
    29 июн 2018
    Сообщения:
    194
    А есть ли возможность использования логических условий/сравнения типа Ссылки недоступны для гостей
     
  16. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Я рекомендую вам использовать по назначению макрос [DUPIGNORE] вне функций поиск-замены.

    Непонятно, зачем вы пытаетесь реализовать удаление дублей именно с функцией поиск-замены.
     
  17. masrub

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

    Регистрация:
    29 июн 2018
    Сообщения:
    194
    Спасибо Вам за программу и за то, что так оперативно отвечаете на вопросы. Очень нравиться Ваша программа по функционалу, ранее использовал другой софт, но перешел к вам. Про макрос [DUPIGNORE] понятно, так же пользуюсь [DELSTRDUP].
    Пытаюсь использовать функцию поиск замена потому что проект для парсинга настроен следующим образом:
    Через границу парсинга 1 берется нужный кусок кода страницы, потом это все передается в повторяющиеся границы, берется ограничение на 10 циклов.
    В каждом цикле с функцией поиск-замены приводиться текст в нужный формат, и эти 10 циклов выводятся в строчку, каждый в свой столбец. Всего получается 10 контактов. В каждом контакте по 2 телефона, иногда они повторяются. Вот именно эти повторы в функции поиск замена я хочу удалить. Видел что в поиск-замене можно использовать регулярные выражения, по этому и прошу помощи на сравнение, и удаление дубля/замены на символ -.
    Возможно можно сравнить как то переменные {VARIABLE(1)}
     
  18. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Пожалуйста.

    Лучше приложите файл проекта под HIDE с POSTCOUNT=10000 (чтобы увидел только я). Постараюсь подобрать решение. Со слов не понятны все нюансы.
     
  19. masrub

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

    Регистрация:
    29 июн 2018
    Сообщения:
    194
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 10000 постов.**
     
    Последнее редактирование: 9 мар 2020
  20. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Посмотрел проект.

    Вам подойдет такая конструкция:
    Код:
    [DUPIGNORE][RESETDATA][KEY]Телефон[/KEY][IFFILTERED]-[/DUPIGNORE]
    Теперь понятен алгоритм извлечения данных в вашем проекте с помощью функции поиск-замены. В данном случае там можно применить макрос [DUPIGNORE]:
    Код:
    {skip}|START{skip}
    START{skip}","phoneInfo":{"phone":"{skip}"{skip},"mobileInfo":{"phone":"{skip}"{skip},"faxInfo":{"phone":"{skip}"{skip}skype":"{skip}"{skip}"icq":"{skip}"{skip}"note":"{skip}"{skip}"city":"{skip}"|{skip(1)}[CSVCS][DUPIGNORE][RESETDATA][KEY]{skip(4)}[/KEY][IFFILTERED]-[/DUPIGNORE][CSVCS][DUPIGNORE][RESETDATA][KEY]{skip(2)}[/KEY][IFFILTERED]-[/DUPIGNORE][CSVCS]{skip(1)}:{skip(4)};{skip(2)}
     |
    [CSVCS][CSVCS]|[CSVCS]-[CSVCS]
    Если потребуется удалять дубли номеров и во второй повторяющейся границе, используйте там макрос [DUPIGNORE2] (принцип работы тот же самый, что и у [DUPIGNORE], но сработает с применением параметра [RESETDATA] от [DUPIGNORE]):
    Код:
    [DUPIGNORE2][RESETDATA][KEY]Телефон[/KEY][IFFILTERED]-[/DUPIGNORE2]
     
    masrub нравится это.

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