AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Regulärer Ausdruck: Alles "zwischen" X und Y
Thema durchsuchen
Ansicht
Themen-Optionen

Regulärer Ausdruck: Alles "zwischen" X und Y

Offene Frage von "Klaus01"
Ein Thema von Der schöne Günther · begonnen am 29. Sep 2016 · letzter Beitrag vom 30. Sep 2016
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Regulärer Ausdruck: Alles "zwischen" X und Y

  Alt 29. Sep 2016, 12:42
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:
X(.*)Y
liefert mir für
Code:
XHallo WeltY
natürlich "Hallo Welt"

Das scheitert natürlich wenn die Eingabe
Code:
XeinsXzweiYdreiYvierXfünfY
ist. Mein Match ist
Code:
einsXzweiYdreiYvierXfünf
, also alles was zwischen dem "ersten" X und dem "letzten" Y ist.

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?
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#2

AW: Regulärer Ausdruck: Alles "zwischen" X und Y

  Alt 29. Sep 2016, 12:51
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 das hier weiter?
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog

Geändert von Valle (29. Sep 2016 um 12:54 Uhr)
  Mit Zitat antworten Zitat
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Regulärer Ausdruck: Alles "zwischen" X und Y

  Alt 29. Sep 2016, 12:54
Code:
X(?!.*X)(.*)Y
wenn du tatsächlich nur das letzte X haben willst, oder

Code:
X(.*?)Y
und dann durch alle Matches iterieren.
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Regulärer Ausdruck: Alles "zwischen" X und Y

  Alt 29. Sep 2016, 16:46
http://www.regular-expressions.info/repeat.html

X[^XY]*Y = von X bis Y ohne X und Y dazwischen.
als MatchGroip X([^XY]*)Y oder mit Lookaround drumdrum = zwischen X bis Y ohne X und Y drinnen.

oder über GreedyFlag (g und G) beim Aufruf
bzw. mit Greedy-Modifier im RegEx = X(.*)Y bzw. X(.*?)Y
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (29. Sep 2016 um 18:31 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Regulärer Ausdruck: Alles "zwischen" X und Y

  Alt 29. Sep 2016, 17:59
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!
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#6

AW: Regulärer Ausdruck: Alles "zwischen" X und Y

  Alt 29. Sep 2016, 18:05
Ich kann zwar nichts zum Thema direkt beisteuern, aber diese Seite hier hat mir schon oft Kopfschmerzen erspart:

http://regex101.com/
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Regulärer Ausdruck: Alles "zwischen" X und Y

  Alt 29. Sep 2016, 18:15
Mein Favorit ist regexr.com
  Mit Zitat antworten Zitat
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

AW: Regulärer Ausdruck: Alles "zwischen" X und Y

  Alt 29. Sep 2016, 19:56
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.
Sebastian
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Regulärer Ausdruck: Alles "zwischen" X und Y

  Alt 29. Sep 2016, 21:27
Danke für den Hinweis. Bislang habe ich noch nichts vermisst, bin aber auch alles andere als ein Profis was Regex angeht
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Regulärer Ausdruck: Alles "zwischen" X und Y

  Alt 30. Sep 2016, 08:43
.. einen hät ich noch
Code:
\S*X(.*)Y$
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz