regex Ausdrücke mit festdefiniertem Ende?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Das ist greedy, dh. es matcht so viel wie möglich. Da gibts aber auch modifier / Anweisungen um das zu ändern und so wenig wie möglich zu matchen, das wäre dann "lazy".

Einfach ein ? an den quantifier anhängen (also *?, +? usw.)

Teils gibts glaube ich auch einen Ungreedy modifier für die gesamte Expression.

Mehr findest du auf https://regex101.com . Beachte allerdings das verschiedene Regex Engines verschiedene Features haben auch z.B. im Web Firefox teils andere als Chromium.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops
Von Experte indiachinacook bestätigt

Regular Expressions sind standardmäßig "greedy". Das heißt, sie finden immer den längsten möglichen Match. Du muss also eine "non-greedy" Expression machen.

Versuche

<i>xmlelementname:</i>(.*?)<br>

Beachte das Fragezeichen hinter dem Stern.

MarcF1919 
Fragesteller
 24.11.2021, 13:20

jup ist volkommen korrekt

0

Regex Ausdrücke umfassen immer den maximal möglichen Bereich. Der gefundene Ausdruck endet nicht beim ersten Treffer, sondern beim letzten. Du musst ggfls vorher terminieren. Du wirst evtl Element2 in dein pattern aufnehmen müssen. Im vorliegenden Beispiel würde die 2 genügen.