![]() |
RexExp Newbie-Frage
Bevor ich jetzt noch lange rumsitze und grüble, frage ich lieber hier die Experten:
Code:
my $t = "xxxxAzz"; |
anyone...?
|
Hi,
Code:
x{2} Code:
(?<!x)x{2}(?!x) |
Zitat:
|
Der Unterschied ist, das ein Ausdruck auch mehrmals matchen kann innerhalb eines Suchstrings. Und dann ergibt x{2} schon was anderes als x{2,}
x{2} (genau 2 Vorkommen von x) xxxxxxx -> 3 Matches (xxxxxxx, xxxxxxx, xxxxxxx) x{2,} (mindestens 2 Vorkommen von x) xxxxxxx -> 1 Match (xxxxxxx) Aber stimmt schon... wenn du nur auf Success abfragst (if) dann ist in dem Fall beides true. Kann dir den RegExCoach empfehlen... da kannst du die Expressions einfach ausprobieren und er zeigt dir auch warum er was getroffen hat... http://www.weitz.de/regex-coach/ |
Zitat:
oder ist das bei diesem ausdruck immer der fall (so wie bei * und +)? |
Das Regex default Verhalten ist immer greedy. Willst du es lazy musst du es explizit mit z.B. ? angeben.
|
Zitat:
oder wird die nur beim ersetzen gebraucht, weil dort der default lazy ist? |
Jo, soweit ich weiß wird beim Replace mit der Option /g angegeben das alle Matches ersetzt werden. Ohne dieser Option wird nur das erste Vorkommen ersetzt...
Bei Replace String 'xxxxAzz' mit 's' x{2} ohne /g -> 'sxxAzz' x{2} mit /g -> 'ssAzz' |
alles klar, danke!
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag