FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Pi_01 am 17 April 2020, 06:46:28

Titel: Reguläre Ausdrücke - Negation
Beitrag von: Pi_01 am 17 April 2020, 06:46:28
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.
Titel: Antw:Reguläre Ausdrücke - Negation
Beitrag von: Icinger am 17 April 2020, 06:57:40
<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 (https://regex101.com/r/tTgTnK/1)
Titel: Antw:Reguläre Ausdrücke - Negation
Beitrag von: Pi_01 am 17 April 2020, 08:40:46
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>?

Titel: Antw:Reguläre Ausdrücke - Negation
Beitrag von: Icinger am 17 April 2020, 08:50:57
Schau dir den Link an, da steht ganz genau, was das macht:

Zitat\/ matches the character / literally (case sensitive)