Нужно отсечь текст до определенного момента с помощью регулярных выражений

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

  1. Kot

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

    Регистрация:
    23 ноя 2012
    Сообщения:
    24
    Добрый день.
    Прошу прощения, что не так силен в регулярках.
    Есть контент:

    "
    <div id="llid1" style="display:none">Stapa Gewinderohr<br>SM16W FT<br>Elektroinstallationsrohr nach EN 61386-1, mit Gewindeenden nach DIN EN 60423, fur den mechanischen Schutz von Kabeln und Leitungen. <br>Mit gratfreier Innenwand. Korrosionsschutzklasse 4 (hoch). Pro Rohr ist bereits eine Verbindungsmuffe aufgeschraubt.<br><br>Klassifizierungscode: 55571 <br><br>Korrosionsschutz: Stahl, tauchfeuerverzinkt, DIN EN ISO 1461<br>Gewinde: M16<br>Gewindelange: 12,5mm<br>Durchmesser aussen: 16mm<br>Lange: 3000mm<br>Materialstarke: 1,4mm<br><br><br>Fabrikat: OBO BETTERMANN<br>Typ: SM16W FT<br>Art.-Nr.: 2046533<br><br>Einheit: m</div>
    "
    Нужно отрезать с начала все, что до "<br>Klassifizierungscode:", т.е. до 1-го по счету упоминания двоеточия ":", но чтобы еще между "<br>" и ":" был контент (может быть от одного и более слова может быть). Как видно, "<br>" может быть несколько штук с начала текста.
    Не могу пока этого добиться.

    Заранее благодарен, Тим.
     
    Последнее редактирование: 24 апр 2015
  2. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Здравствуйте
    Первое по счету : это <div id="llid1" style="display:none"> )))
    А вообще судя по тексту, то лучше сделать так
    Код:
    re:^(.*?)(<br><br>.*?</div>)(.*?)$|$2
    ну и дальше так махинации уже с этим текстом
     
  3. Kot

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

    Регистрация:
    23 ноя 2012
    Сообщения:
    24
    Бывает, что два раза подряд не будет <br><br>. Допустим убрал в начале тег <div>

    "
    Stapa Gewinderohr<br>SM16W FT<br>Elektroinstallationsrohr nach EN 61386-1, mit Gewindeenden nach DIN EN 60423, fur den mechanischen Schutz von Kabeln und Leitungen. <br>Mit gratfreier Innenwand. Korrosionsschutzklasse 4 (hoch). Pro Rohr ist bereits eine Verbindungsmuffe aufgeschraubt.<br>Klassifizierungscode: 55571 <br><br>Korrosionsschutz: Stahl, tauchfeuerverzinkt, DIN EN ISO 1461<br>Gewinde: M16<br>Gewindelange: 12,5mm<br>Durchmesser aussen: 16mm<br>Lange: 3000mm<br>Materialstarke: 1,4mm<br><br><br>Fabrikat: OBO BETTERMANN<br>Typ: SM16W FT<br>Art.-Nr.: 2046533<br><br>Einheit: m</div>
    "

    Тогда как выпутываться?
     
  4. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Klassifizierungscode это слово все время есть?
    если да тогда простой заменой
    Код:
    {skip}Klassifizierungscode|Klassifizierungscode
     
  5. Kot

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

    Регистрация:
    23 ноя 2012
    Сообщения:
    24
    Нет. Этого слова может не быть. Главное отсечь до этой конструкции:

    (...контент с возможным включением нескольких <br>...)<br>(...любое слово или 2,3 слова и т.п.. но без тегов <br>...):
     
  6. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    тогда так:
    Код:
    re:^(.*?)(<br>\w{7,}:.*?)$|$2
     
  7. Kot

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

    Регистрация:
    23 ноя 2012
    Сообщения:
    24
    Сработало! Большое спасибо. Очень помогли!
    А что означает /$2/ при замене?
     
  8. Kot

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

    Регистрация:
    23 ноя 2012
    Сообщения:
    24
    А вот в этом случае:

    "
    Stapa Steckmuffe<br>SV16W G<br>Zubehorteil: Steckmuffe, fur die Verbindungen zwischen Elektroinstallationsrohren. Mit gratfreier Innenwand.<br><br>Klassifizierungscode: <br><br>Korrosionsschutz: Stahl, galvanisch verzinkt, DIN EN 12329<br>Durchmesser aussen: 18,6 mm / M16<br>Lange: 50mm<br>Materialstarke: 1mm<br><br><br>Fabrikat: OBO BETTERMANN<br>Typ: SV16W G<br>Art.-Nr.: 2046854<br><br>Einheit: Stuck
    "

    после отработки регулярки обрез должен быть до "<br>Zubehorteil:", а на деле обрезает до "<br>Klassifizierungscode:".
     
  9. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.442
    Адрес:
    Latvia
    Код:
    re:^([^\:]*)<br>([^\:<>]+)\:|$2:
     

    Вложения:

    • regex.png
      regex.png
      Размер файла:
      31,6 КБ
      Просмотров:
      17

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