Reguläre Ausdrücke - Negation

Begonnen von Pi_01, 17 April 2020, 06:46:28

Vorheriges Thema - Nächstes Thema

Pi_01

Guten Morgen!
Ich möchte aus den Quellcode
<div class="main">Dieser Text soll ausgelesen werden</div>
den Text zwischen den div-Tags auslesen.
Ich dachte zunächst an
<div class="main">(.*)</div>
Der reguläre Ausdruck ist aber unvollständig/fehlerhaft, denn er würde beim Quellcode
<div class="main">Dieser Text soll ausgelesen werden</div>Dieser Text soll NICHT ausgelesen werden</div>
auch den Text nach dem ersten </div>-Tag berücksichtigen.

Ich suche nun nach der einfachsten Form eines reg. Ausdrucks, der alle Zeichen berücksichtigt (.*), außer das <-Zeichen.

Icinger

<div class="main">(.*)</div>

1) Solltest du das / maskieren
2) Einfach die Suche lazy machen

<div class="main">(.*?)<\/div>
Sollte das gewünschte ergebniss bringen.

Siehe https://regex101.com/r/tTgTnK/1
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Pi_01

Wie ist das maskieren in diesem Fall zu verstehen?
Erwartet der Ausdruck durch das maskieren den Code
... werden<div>
bricht dann aber ab,
weil nach "werden" kein <div> kommt sondern </div>?


Icinger

Schau dir den Link an, da steht ganz genau, was das macht:

Zitat\/ matches the character / literally (case sensitive)
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho