PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Alternative Richtig??


EQO
30.01.2009, 20:36
Hallo,
ich bin mehr oder weniger neu in Regexchsen und habe dazu eine Frage.

Ich habe also eine Regex die so Aussieht: \d{1,4}\.?\d{1,2}
Kann ich das mit: (\d*?\.?){2} Ersetzten? und wird durch die "Gierigkeit" von \d*? Aufgehoben?

Es soll Finden:
1
1.1
11.11
111.11
1111.11

Danke


Jan Krüger
30.01.2009, 21:02
Klingt nach Perl-kompatiblen regulären Ausdrücken. Da ist (standardmäßig! Man kann das mit einem Modifier umbiegen) *? ein Ausdruck, der ausdrücklich nicht "gierig" ist. Das dürfte hier keine große Rolle spielen; der Hauptunterschied zum anderen Ausdruck ist, dass durch die weggefallenen Limits wesentlich mehr Strings matchen (im Wesentlichen jede Folge von Einsen, optional mit einem Punkt drin, optional ein weiterer Punkt am Ende). Der wichtigste Sonderfall im neuen Ausdruck: er matcht auch den leeren String; das ist wahrscheinlich nicht gewollt.

EQO
30.01.2009, 21:23
Hallo,
Der wichtigste Sonderfall im neuen Ausdruck: er matcht auch den leeren String; das ist wahrscheinlich nicht gewollt.
Nein das ist nicht gewollt :mad: und sogar Kontraproduktiv. Aber, jetzt Verstehe ich es ;)
Danke für die ausführliche Erklärung :)