У меня есть эти 4 строки, все начинающиеся с тега <p class="TEST"> и заканчивающиеся тегом <br> за исключением двух последних.

<p class="TEST">My mother is at home.<br>
<p class="TEST">My father is at home.<br>
<p class="TEXT">My sister is at home.<LLbr>
<p class="TEXT">My brother is at home.<AAbr>

Итак, я хочу найти все строки с тегом TEXT, который не заканчивается на <br>

Мой результат должен быть

<p class="TEXT">My sister is at home.<LLbr>
<p class="TEXT">My brother is at home.<AAbr>

Я сделал регулярное выражение, но не слишком хорошо. (?-s)(.*<p class="TEXT">.*)(?-s)(?!)<br>(.*)$

1 ответ1

3
  • Ctrl+H
  • Найти что: <p class="TEXT">(?:(?!<br>)(?!<p).)*(?:<.+?>|\z)
  • UNcheck Match case
  • проверить обернуть
  • проверьте регулярное выражение
  • ПРОВЕРИТЬ . matches newline
  • Поиск в документе

Объяснение:

<p class="TEXT">    # literally
(?:                 # start non capture group
  (?!<br>)          # negative lookahead, make sure we haven't <br>
  (?!<p)            # negative lookahead, make sure we haven't <p
  .                 # any character but newline
)*                  # group may appear 0 or more times
(?:                 # non capture group
   <.+?>            # a tag
 |                  # OR
   \z               # end of string
)                   # end of group

DEMO

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .