Делимся регулярками

Тема в разделе "Делимся опытом", создана пользователем 7make, 30 май 2013.

  1. 7make

    7make A-Parser Pro License
    A-Parser Pro

    Регистрация:
    8 июн 2012
    Сообщения:
    10
    Симпатии:
    5
    Регулярка:
    Код:
    ^https?:\/\/([^\/]+)
    Режет урл ссылки до домена.
    Было: http://site.com/cat/page.html
    Стало: site.com
     
    clepsydra нравится это.
  2. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.130
    Симпатии:
    1.649
    Это лучше делать через конструктор результатов, там есть встроенный функционал по выделению домена - Extract Domain, подробнее тут: http://a-parser.com/threads/965/
     
    #2 Forbidden, 30 май 2013
    Последнее редактирование модератором: 14 ноя 2014
  3. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.130
    Симпатии:
    1.649
    Поиск титла на странице
    Код:
    <title>([^<>]*)</title>
    Флаги: is
    Поиск e-mail'ов
    Код:
    \b([-a-z0-9._%+]+@[a-z0-9.-]+\.[a-z]{2,6})\b
    Флаги: ig
     
    clepsydra нравится это.
  4. MuscleM

    MuscleM A-Parser Pro License
    A-Parser Pro

    Регистрация:
    5 май 2013
    Сообщения:
    13
    Симпатии:
    2
  5. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.130
    Симпатии:
    1.649
  6. Dodgy

    Dodgy A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    14 сен 2012
    Сообщения:
    75
    Симпатии:
    8
    Всем привет. Как известно, многие при покупает а-парсер-а, часто сталкиваются с проблемой с составлением регулярных выражений, и часто заебывают нашего любимого Форбиддена, чем отвлекают его от великих дел. Так вот мое предложение такое: сделать дополнительное окошко для тестирования регулярных выражений, где будут все флаги и автоматическая составлялка регулярок с помощью, как в зеннопостере. Например: закинули исходник страницы, выделии кусок текста - признаки+то что надо, выделили нужную часть что надо, нажали кнопку(что надо спарсить), выделили динамические части тоже обозначили, и на выходе мы получили работающую регулярку, нажали кнопку тест, сбоку выдался результат.

    «И волки сыты и овцы целы и пастуху вечная память»
     
    vadim4uk и vipuncle нравится это.
  7. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.130
    Симпатии:
    1.649
    это больше подходит к парсеру через XPath, который в будущем скоро так же будет

    по поводу проверки регулярок - без ручного составления в любом случае не обойтись, т.е. лучше всего брать исходник и закидывать в сервис на подобии

     
  8. qazwsxedc

    qazwsxedc A-Parser Pro License
    A-Parser Pro

    Регистрация:
    7 ноя 2012
    Сообщения:
    85
    Симпатии:
    9
    А кто бы помог, составить регулярку по парсингу полных предложений.

    Должна быть такая примерно. больше 4 пробелов, больше 100 символов, без спец симвоволов, оканчивается на точку, после точки пробел.

    Сколько не пытался более мение рабочий вариант не получился, не разбираюсь в регулярках)))

    Смысл спарсить много тематических предложений не затачивая под каждый рес =)
     
  9. qazwsxedc

    qazwsxedc A-Parser Pro License
    A-Parser Pro

    Регистрация:
    7 ноя 2012
    Сообщения:
    85
    Симпатии:
    9
    Ну и вообще получится сделать такое. Или может вынести как отдельный парсер?)
     
  10. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.130
    Симпатии:
    1.649
    Вот по твоему алгоритму, только без пробела в конце, имхо это не важно:
    Код:
    (\b[A-ZА-Я](?:\w+[,;:]? ){3,}\w{2,}[.!?])
     
    qazwsxedc и Force68 нравится это.
  11. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.130
    Симпатии:
    1.649
  12. Air777

    Air777 A-Parser Pro License
    A-Parser Pro

    Регистрация:
    15 мар 2013
    Сообщения:
    1
    Симпатии:
    4
    Смотрю что то народ стесняется выкладывать регулярки... выкладываю что есть прошу не пиннать сильно а по возможности исправить и показать.

    "Мобильные номера(Россия)","+0123456789","(8|\+[ )(a-z></-]{0,8}7|7){1}[ )(a-z></-]{0,8}[9]{1}\d{2}[ )(a-z></-]{0,8}\d{3}([ )(a-z></-]{0,8}\d{2}){2}"
    "Мобильные номера(Украина)","+0123456789","(?:8|38|\+38|){1}[ )(a-z></-]{0,6}(?:050|063|066|067|068|091|092|093|094|095|096|097|098|099){1}[ )(a-z></-]{0,6}\d{3}[ )(a-z></-]{0,6}\d{2}[ )(a-z></-]{0,6}\d{2}"
    "Мобильные номера(Белорусия)","+0123456789","(?:75|375|\+375|){1}[ )(a-z></-]{0,6}(?:25|29|33|44){1}[ )(a-z></-]{0,6}\d{3}[ )(a-z></-]{0,6}\d{2}[ )(a-z></-]{0,6}\d{2}"
    "Мобильные номера(Казахстан)","+0123456789","(?:8|7|\+[ )(a-z></-]{0,6}7){1}[ )(a-z></-]{0,6}(701|700|702|777|705|775|707){1}[ )(a-z></-]{0,6}\d{3}([ )(a-z></-]{0,6}\d{2}){2}"
    "Номера Билайн","+0123456789","(?:8|\+[ )(a-z></-]{0,6}7){1}[ )(a-z></-]{0,6}[9]{1}(?:01|02|03|05|06|08|09|60|61|62|63|64|65|67|68){1}[ )(a-z></-]{0,6}\d{3}([ )(a-z></-]{0,6}\d{2}){2}"
    "Номера MTC","+0123456789","(?:8|\+[ )(a-z></-]{0,6}7){1}[ )(a-z></-]{0,6}[9]{1}(?:88|17|89|10|11|12|13|14|15|16|17|18|19|80|81|82|83|84|85|87){1}[ )(a-z></-]{0,6}\d{3}([ )(a-z></-]{0,6}\d{2}){2}"
    "Номера Meгафон","+0123456789","(?:8|\+[ )(a-z></-]{0,6}7){1}[ )(a-z></-]{0,6}[9]{1}(?:26|25|21|31|20|22|23|24|27|28|37|29|30|32|38|33){1}[ )(a-z></-]{0,6}\d{3}([ )(a-z></-]{0,6}\d{2}){2}"
    "Номера Теле2","+0123456789","(?:8|\+[ )(a-z></-]{0,6}7){1}[ )(a-z></-]{0,6}[9]{1}(?:02|04|08|50|51|52|53){1}[ )(a-z></-]{0,6}\d{3}([ )(a-z></-]{0,6}\d{2}){2}"
    "Proxy","","([0-9]|[0-9][0-9]|[01][0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[0-9][0-9]|[01][0-9][0-9]|2[0-4][0-9]|25[0-5])){3}:\d{2,5}"
    "Email","","([A-Za-z0-9_\.\-]{1,20})@([A-Za-z0-9\.\-]{1,20})\.([A-Za-z]{2,4})"
    "Email (Казахстан)","","([A-Za-z0-9_\.\-]{1,20})@([A-Za-z0-9\.\-]{1,20})\.kz"
    "Email (только с домена ссылки)","","([A-Za-z0-9_\.\-]{1,20})@%DOMEN%"
    "Email [AT]mode","","([A-Za-z0-9_\.\-]{1,20})[ \-_\(\[\{]{1,2}(@|AT|at|the-at-symb)[ \-_\)\]\}]{1,2}([A-Za-z0-9_\.\-]{1,20})[ ]?(\.|(dot)|_._)([ ]?[A-Za-z]{2,4})"
    "bull_id","0123456789","\{.bull_id.\:.\d*.\}"
    "ucoz","","http\:\/\/[a-z0-9_\-.]*(ucoz.ru|ucoz.com|ucoz.net|ucoz.org|ucoz.de|ucoz.ua|ucoz.co.uk|ucoz.lv|at.ua|3dn.ru|my1.ru|clan.su|moy.su|do.am|ucoz.es|ucoz.hu|ucoz.ae|ucoz.ro)\/forum\/"
    "Сайты ua","","http\:\/\/[a-z0-9_\-.]*\.ua[a-z0-9_\-.]*"
    "ICQ","0123456789","(ICQ|аськ|ася|айсикью|стучать|стукни)[^0-9]{0,3}[0-9]{4,9}"
    "icq antichat в профилях","0123456789","\">[0-9]{4,9}<\/a><\/td>"
    "Skype","","(Skype|скайп)[ :-]{1,2}[a-z0-9]+"
    "Ссылки","","http\:\/\/[a-z0-9_\-.]*\.[a-z0-9_\-.]*"
    "Mastercard & Visa","","^[4|5]\d{3}(\s|-)?\d{4}(\s|-)?\d{4}(\s|-)?\d{4}$"
     
  13. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.130
    Симпатии:
    1.649
  14. aquatell

    aquatell A-Parser Pro License
    A-Parser Pro

    Регистрация:
    8 ноя 2012
    Сообщения:
    118
    Симпатии:
    27
    Есть классная книга - Бен Форта - Регулярные выражения. 10 минут на урок. Там где то 200 страниц. Все очень доступно объясняется, я сам по этой книге учился составлять регуляки. За неделю уже сами научитесь составлять. Рекомендую, для новичков самое то.
    А если кто уже имеет опыт, и хочет его усовершенствовать то есть еще одна книга от гуру по регуляркам (не рекомендую новичкам т.к. сложно по началу без общих понятий) Дж.Фридл - Регулярные выражения
     
    nouton и 7make нравится это.
  15. qazwsxedc

    qazwsxedc A-Parser Pro License
    A-Parser Pro

    Регистрация:
    7 ноя 2012
    Сообщения:
    85
    Симпатии:
    9
    А как сюда добавить чтоб было не больше 4 заглавных букв в предложении?
     
  16. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.130
    Симпатии:
    1.649
    такие задачи точно не стоит решать регулярными выражениями :)
     
  17. qazwsxedc

    qazwsxedc A-Parser Pro License
    A-Parser Pro

    Регистрация:
    7 ноя 2012
    Сообщения:
    85
    Симпатии:
    9
    Так а все же?) Подскажи.
    По идее можно ж :)
     
  18. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.130
    Симпатии:
    1.649
    просто - точно никак
     
  19. signup

    signup A-Parser Pro License
    A-Parser Pro

    Регистрация:
    2 апр 2013
    Сообщения:
    15
    Симпатии:
    2
    Есть строки вида:

    <link rel="pingback" href="(.*?)" />
    <link rel="pingback" href="(.*?)"/>
    <link rel="pingback" href="(.*?)" >
    <link rel="pingback" href="(.*?)">

    Как можно объединить регуляркой эти строки в один запрос?
    Парсер чекает список URL'ов на наличие строки в коде страницы и откладывает урл в результат (использую NET::HTTP). Тоесть, нужно чтобы собирались все URL'ы в независиомсти от окончания " />,/>, >,>" и др.
     
  20. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.130
    Симпатии:
    1.649
    <link rel="pingback" href="(.*?)"[^>]*>
    или вообще проще:
    <link rel="pingback" href="(.*?)"
     
    signup нравится это.

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