![]() |
Regulärer Ausdruck: Alles "zwischen" X und Y
Es hört sich so einfach an, aber ich stehe auf dem Schlauch folgendes in einen regulären Ausdruck zu bekommen:
Erfasse das, was zwischen dem letzten "X" und "Y" eingerahmt ist. Beispiel: Der Ausdruck
Code:
liefert mir für
X(.*)Y
Code:
natürlich "Hallo Welt"
XHallo WeltY
Das scheitert natürlich wenn die Eingabe
Code:
ist. Mein Match ist
XeinsXzweiYdreiYvierXfünfY
Code:
, also alles was zwischen dem "ersten" X und dem "letzten" Y ist.
einsXzweiYdreiYvierXfünf
Ich möchte aber alles zwischen dem letzten X und dem darauffolgenden Y. In diesem Fall also "fünf". Geht mit regulären Ausdrücken nicht, oder? |
AW: Regulärer Ausdruck: Alles "zwischen" X und Y
Unter PCRE nennt man das Greedy-Flag, schau mal ob es das bei dir gibt.
Edit: Oh sorry, hab deinen Beitrag nicht richtig gelesen. Ich glaube Greedy ist hier doch nicht zutreffend. Edit 2:// Hilft dir ![]() |
AW: Regulärer Ausdruck: Alles "zwischen" X und Y
Code:
wenn du tatsächlich nur das letzte X haben willst, oder
X(?!.*X)(.*)Y
Code:
und dann durch alle Matches iterieren.
X(.*?)Y
|
AW: Regulärer Ausdruck: Alles "zwischen" X und Y
![]()
Delphi-Quellcode:
= von X bis Y ohne X und Y dazwischen.
X[^XY]*Y
als MatchGroip
Delphi-Quellcode:
oder mit Lookaround drumdrum = zwischen X bis Y ohne X und Y drinnen.
X([^XY]*)Y
oder über GreedyFlag (g und G) beim Aufruf bzw. mit Greedy-Modifier im RegEx =
Delphi-Quellcode:
bzw.
X(.*)Y
Delphi-Quellcode:
X(.*?)Y
|
AW: Regulärer Ausdruck: Alles "zwischen" X und Y
Vielen Dank, das hat mir sehr geholfen. Ich war zu sehr verbissen darauf einen Ausdruck für einen Treffer zu haben, ich kann ja mehrere Matches haben und das letzte nehmen.
Auch die Sache mit dem Greedy-Quantifier habe ich jetzt verstanden, danke! :thumb: |
AW: Regulärer Ausdruck: Alles "zwischen" X und Y
Ich kann zwar nichts zum Thema direkt beisteuern, aber diese Seite hier hat mir schon oft Kopfschmerzen erspart:
![]() |
AW: Regulärer Ausdruck: Alles "zwischen" X und Y
Mein Favorit ist
![]() |
AW: Regulärer Ausdruck: Alles "zwischen" X und Y
regexr ist aber für Javascript-Regex, da fehlt also einiges was PCRE (Viele Unicode-Features, Lookbehind, Possesive Quantifier, Match-Reset, Continous Matching etc.) kann.
|
AW: Regulärer Ausdruck: Alles "zwischen" X und Y
Danke für den Hinweis. Bislang habe ich noch nichts vermisst, bin aber auch alles andere als ein Profis was Regex angeht :stupid:
|
AW: Regulärer Ausdruck: Alles "zwischen" X und Y
.. einen hät ich noch
Code:
Grüße
\S*X(.*)Y$
Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz