Thread optional match (2 answers)
Opened by linuxCowboy at 2014-06-16 22:34

Raubtier
 2014-06-16 23:05
#176090 #176090
User since
2012-05-04
1054 Artikel
BenutzerIn

user image
Naja, das liegt daran:
ax -> $1
Dann versucht .*? 0 Zeichen zu matchen (passt)
Dann wird versucht (&c[^&]*)? zu matchen (passt, 0x)
.* matcht den Rest des Strings.

Also kein $2 da.

Noch ein paar Kommentare:
- ein .* am Ende einer Regexp ohne Anker ist überflüssig
- Lösung: du musst anders gruppieren:
Code (perl): (dl )
echo 'ax&bx&xx&dx' | perl -wnE 'say "$1$2" if /(a[^&]*)(?:.*?(&c[^&]*))?/'

- warum PERL5OPT, perl -wnE tuts doch auch?

View full thread optional match