Regex: Wählen Sie alle Zeilen aus, die nicht mit einem bestimmten Tag enden

0

Ich habe diese 4 Zeilen, alle beginnend mit dem Tag <p class="TEST">und endend mit dem Tag mit <br>Ausnahme der letzten beiden.

<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>

Ich möchte also alle Zeilen mit dem Tag TEXT finden, die nicht auf enden <br>

Mein Ausgabeergebnis sollte sein

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

Ich habe einen Regex gemacht, ist aber nicht so gut. (?-s)(.*<p class="TEXT">.*)(?-s)(?!)<br>(.*)$

Nur ich
quelle
Eine Option, die Ihnen vielleicht das gibt, was Sie wollen. Wenn Sie Strg + F drücken, um das Suchdialogfeld aufzurufen, klicken Sie auf die Registerkarte Markieren. Aktivieren Sie die Option Lesezeichenzeile und suchen Sie nach <br> oder was auch immer Sie zum Markieren der Zeile benötigen. Gehen Sie dann zu Suchen - Lesezeichen und wählen Sie das umgekehrte Lesezeichen. Ich finde diesen Workflow in vielen Szenarien hilfreich. Ich hoffe es hilft.
HelpingHand
Ich habe mehr als 5000 .html-Dateien zu überprüfen :) Ich habe keine Zeit, jede einzeln zu überprüfen :)
Just Me

Antworten:

3
  • Ctrl+H
  • Finde was: <p class="TEXT">(?:(?!<br>)(?!<p).)*(?:<.+?>|\z)
  • Deaktivieren Sie die Option Groß- / Kleinschreibung
  • check Umwickeln
  • Überprüfen Sie den regulären Ausdruck
  • ÜBERPRÜFEN . matches newline
  • Search in document

Erläuterung:

<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

Bildbeschreibung hier eingeben

DEMO

Toto
quelle
Hallo Toto, vielen Dank. Aber ein anderes Szenario. Angenommen, der <br>Tag steht in der nächsten Zeile, und ich möchte ihn auch nicht finden, weil er <br> hat. Siehe diesen Link regex101.com/r/vSfrsv/2
Just Me
@ JustMe: Siehe aktualisierte Demo
Toto
Danke, Toto. Bitte aktualisieren Sie Ihre Antwort hier mit dieser alternativen Regex-Lösung, falls jemand sie benötigt. Und erklären Sie bitte auch, was dieser Teil von Regex bedeutet: (?! <P).) * (?: <. +?> | \ Z)
Just Me
@ JustMe: Bearbeiten fertig.
Toto
Bitte sehen Sie diesen realen Fall. regex101.com/r/y8GB6e/1 Ich ändere ein wenig Ihren regulären Ausdruck mit meinen echten Tags. Funktioniert aber nicht. Bitte helfen Sie mir und ändern Sie die gute Version über den unten stehenden Link. Anstelle von <br> habe ich </ p>
Just Me