Registriert seit: 29. Sep 2013
152 Beiträge
|
AW: RegEx, Probleme mit Suchstring
25. Apr 2014, 06:26
Anscheinend macht
RegExStr = 'ABC.*?(\d+).*?XYZ' was ich moechte.
Kann mir jemand erklaeren warum man '\d+' verwenden muss und nicht '\d*' ? Meiner Meinung nach sollte es egal sein wenn eine einstellige Zahl vorhanden ist, denn laut Delphi Hilfe ist:
1) Ein Sternchen nach einem Zeichen oder einer Zeichengruppe steht für eine beliebige Anzahl von Vorkommen dieses Zeichens oder dieser Zeichengruppe, einschließlich keinem Vorkommen. bo?t entspricht zum Beispiel bt, bot und boot.
2) Ein Plus-Zeichen nach einem Zeichen oder einer Zeichengruppe steht für eine beliebige Anzahl von Vorkommen dieses Zeichens oder dieser Zeichengruppe mit mindestens einem Vorkommen. bo+t entspricht zum Beispiel bot und boot, aber nicht bt.
Version 2 macht natuerlich mehr Sinn, aber ich sehe keinen Grund dafuer dass \d* nicht funktionieren sollte.
Noch schwerer zu verstehen ist die Kombi '.*?' Die ersten beiden Zeichen '.*' stehen fuer eine beliebige Menge willkuerlicher Character. Wieso ist das Fragezeichen notwendig? Stern erlaubt das davorstehehnde in beliebiger Anzahl, das Fragezeichen erlaubt nur kein oder einmaliges Vorkommen des davorstehenden Teils, also hat gegenteilige Wirkung
|