1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2200+ и мы растем!
    Скрыть объявление

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

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

  1. baaa

    baaa A-Parser Pro License
    A-Parser Pro

    Регистрация:
    19 июн 2013
    Сообщения:
    3
    Симпатии:
    0
  2. Support

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

    Регистрация:
    16 мар 2012
    Сообщения:
    3.919
    Симпатии:
    1.984
    Добрый день.
    Т.к. на указанном сайте есть очень длинное предложения без пунктуации, то скорее всего это и есть причиной падений.
    Как вариант, попробуйте добавить верхнее ограничение по кол-ву слов, например, до 40 слов:
    Код:
    (\b[A-ZА-Я](?:\w+[,;:]? ){3,40}\w{2,}[.!?])
     
  3. Dohrenarh

    Dohrenarh A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    5 окт 2016
    Сообщения:
    16
    Симпатии:
    1
    Какой регуляркой поудалять слова и предложения с кириллицей Блокнотом++?
     
  4. Support

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

    Регистрация:
    16 мар 2012
    Сообщения:
    3.919
    Симпатии:
    1.984
    Как самый простой вариант:
    Код:
    [а-я]+
     
  5. shmell

    shmell A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    20 май 2015
    Сообщения:
    27
    Симпатии:
    8
    А как найти первый тег <div(.*?)> перед текстом? Маркер текста есть.
    Чет не хочет он у меня искать.
     
  6. Support Денис

    Support Денис A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    12 июн 2017
    Сообщения:
    586
    Симпатии:
    184
    Здравствуйте. Дайте ссылку на сайт и укажите перед каким текстом искать тег div, указать желательно скриншотом.
     
  7. Anton

    Anton A-Parser Pro License
    A-Parser Pro

    Регистрация:
    25 фев 2014
    Сообщения:
    8
    Симпатии:
    2
    ребят помогите в регулярках не силён, пробовал в конструкторе и не допонял. как обозначить вложенность тегов в парсинге, допустим есть:
    Код:
    <h2>
    <img src="url.com/1.jpg">
    <a href="url.com"/>То что нужно</a>
    </h2>
    Как мне выпарсить анкор ссылки, указав что именно в h2 собирать?

    Заранее спасибо)
     
  8. Support

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

    Регистрация:
    16 мар 2012
    Сообщения:
    3.919
    Симпатии:
    1.984
    Код:
    <h2>.+?<a[^>]+>(.+?)<\/a>\s*<\/h2>
    [​IMG]
     
    Anton нравится это.
  9. Anton

    Anton A-Parser Pro License
    A-Parser Pro

    Регистрация:
    25 фев 2014
    Сообщения:
    8
    Симпатии:
    2
    Спасибо. Извините а как собирать все совпадения? чёт никак не пойму. собирает только 1 совпдение
     
  10. Support

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

    Регистрация:
    16 мар 2012
    Сообщения:
    3.919
    Симпатии:
    1.984
  11. Anton

    Anton A-Parser Pro License
    A-Parser Pro

    Регистрация:
    25 фев 2014
    Сообщения:
    8
    Симпатии:
    2
    Ага спасибо, эт понял. в конструкторе всё собирает. Но как дело в проекте доходит) ничё не получается
    вот такие настройки https://clip2net.com/s/3Ysct8l
     
  12. Support

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

    Регистрация:
    16 мар 2012
    Сообщения:
    3.919
    Симпатии:
    1.984
    Для парсинга данных регулярными выражениями лучше использовать Parse custom result (Использовать регулярку).
    Если вы собираете данные в массив, то его нужно выводить через .format. Т.е. в данном случае
    Код:
    $as.format('$a\n')
    Детальнее о методе .format: http://a-parser.com/wiki/template-toolkit/#Метод-format-для-массивов
    Также рекомендую ознакомиться с такими статьями Документации:
    http://a-parser.com/wiki/results-representation/#Массивы-результатов
    https://a-parser.com/wiki/result-format/
     
  13. Anton

    Anton A-Parser Pro License
    A-Parser Pro

    Регистрация:
    25 фев 2014
    Сообщения:
    8
    Симпатии:
    2
    аааа. огромное спасибище))
     
    Forbidden и Support нравится это.
  14. Zlodeys

    Zlodeys A-Parser Pro License
    A-Parser Pro

    Регистрация:
    2 фев 2016
    Сообщения:
    51
    Симпатии:
    30
    Все привет! Парни, помогите составить такую регулярку.
    Имеем:
    Мама мыла раму|Чисто чисто|Рама стала чистой папа не мыл раму|
    Папа мыл раму|Чисто чисто|Рама стала чистой мама не мыла раму|
    Жена мыла раму влажной губкой|Чисто чисто|Рама стала чистой мама и папа не мыли раму|

    Нужно сделать проверку на наличие слов ДО первого разделителя |
    К примеру нам нужно оставить строки где есть слово папа или влажной, соответственно сработает только на втором и третьем примере.
    Искомые слова, могут быть в любом месте предложения (Мыл папа раму, Мыл раму папа и так далее), главное это поиск в предложении был ДО первого символа разделителя |
     
  15. Support

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

    Регистрация:
    16 мар 2012
    Сообщения:
    3.919
    Симпатии:
    1.984
    [​IMG]
     
    Zlodeys нравится это.
  16. Zlodeys

    Zlodeys A-Parser Pro License
    A-Parser Pro

    Регистрация:
    2 фев 2016
    Сообщения:
    51
    Симпатии:
    30
    Спасибо преогромное!
     
    #96 Zlodeys, 11 мар 2019
    Последнее редактирование: 11 мар 2019
    Support нравится это.
  17. Dmitron

    Dmitron A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    28 май 2017
    Сообщения:
    143
    Симпатии:
    7
    Нужно спарсить все value непрочитанных писем от [email protected]

    Вот кусок кода в котором фигурирует два непрочитанных письма, одно из которых от [email protected], а другое нам не нужно.

    Я использую такую регулярку (попробуйте)
    messageline_unread[\S\s]+?value="(.*?)"[\S\s]+?mailer-daemon

    Но эта регулярка ищет первый value, а мне нужно самое короткое совпадение.
    Помогите пожалуйста найти самое короткое совпадение.


    Код:
                <tr id="msg_15758943780799221044_item" class="js-messageline messageline  messageline_unread">
        <td class="messageline__box messageline__box_left">
            <label class="messageline__label" for="msg_15758943780799221044">
                <input type="checkbox" id="msg_15758943780799221044" name="id" value="15758943780799221044" class="js-messageline-checkbox" />
                
            </label>
        </td>
        <td class="messageline__box">
            <a class="messageline__link" href="/message/15758943780799221044">
                <span class="messageline__from">
                
                    <img src="https://img.imgsmail.ru/r/m_img/[email protected]" alt="" width="8" height="8" />
                
                    Почта Mail.ru
                </span>
                <span class="messageline__subject">
                    
                    Вход с нового устройства в аккаунт
                </span>
            </a>
        </td>
        <td class="messageline__box messageline__box_right">
            <div class="js-messageline-rightcol messageline__actions">
                
                    <a class="messageline__flag icon icon_message-flag js-flag" href="/cgi-bin/movemsg?form_sign=5c986384c7882115d314b703c13129ef&form_token=447966007f034c7a1901510e0105020d0657040b0d0b060400520700005006090354000a080a085557165858435459445e&id=15758943780799221044&mark=1&markmessage=6"></a>
                
    
                
    
                <span class="messageline__date">15:26</span>
            </div>
            <a class="js-messageline-scroller messageline__scroller" href="#btoolbar"></a>
        </td>
    </tr>
    
    
    
                
                
                <tr id="msg_15752166650211077108_item" class="js-messageline messageline  messageline_unread">
        <td class="messageline__box messageline__box_left">
            <label class="messageline__label" for="msg_15752166650211077108">
                <input type="checkbox" id="msg_15752166650211077108" name="id" value="15752166650211077108" class="js-messageline-checkbox" />
                
            </label>
        </td>
        <td class="messageline__box">
            <a class="messageline__link" href="/message/15752166650211077108">
                <span class="messageline__from">
                
                    <img src="https://img.imgsmail.ru/r/m_img/[email protected]" alt="" width="8" height="8" />
                
                    [email protected]
                </span>
                <span class="messageline__subject">
                    
                    Ваше сообщение не доставлено. Mail failure.
                </span>
            </a>
        </td>
     
  18. Support

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

    Регистрация:
    16 мар 2012
    Сообщения:
    3.919
    Симпатии:
    1.984
    Удобнее это делать несколькими простыми регулярками. Сначала разбиваете на блоки <tr>...</tr>, а потом перебираете в цикле каждый блок, забирая с каждого отправителя, статус и value. Если отправитель и статус соответствуют искомым, то выводите value
     
  19. jumanji

    jumanji A-Parser Pro License
    A-Parser Pro

    Регистрация:
    17 апр 2018
    Сообщения:
    5
    Симпатии:
    0
    333.png

    если длинный title и многострочный, то регуляркой [\n\r]+ через конструктор результатов title будет в одну строку
     
  20. Ins1d3-n3t

    Ins1d3-n3t A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    24 мар 2020
    Сообщения:
    18
    Симпатии:
    3
    Всем привет) или я туплю или не понимаю, в общем нужно получать в результате линки вида http:// и https:// , не доменом, я делал как-то через regexp, подскажите кому не сложно, чё-то башка не варит, а надо ...
     

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