in reply to Re^3: Regex Optional capture doesn't
in thread Regex Optional capture doesn't
> The fix doesn't work because the regex has to decide which non-greedy ? has "precedence".
strange, it works like I initially thought
DB<63> print join "|",'abc' =~ /a(.+?)(c)?/ b|c DB<64> print join "|",'abd' =~ /a(.+?)(c)?/ b|
well you seem to have other issues I can't see.
Interesting
DB<84> print join "|",'a<c1<c2' =~ /(.+?)<(c.)?/ # ok a|c1 DB<85> print join "|",'a<b1<b2' =~ /(.+?)<(c.)?/ # ok a| DB<86> print join "|",'a<b1<c2' =~ /(.+?)<(c.)?/ # oops a|
you might want to use use re 'debug' to parse whats happening.
ah now it's clearer
DB<89> print join "|",'a<b1<c2' =~ /(.+?)(c.)?/ a|
The non-greedy is finishing as soon as it succeeds, and c. is optional
Cheers Rolf
(addicted to the Perl Programming Language and ☆☆☆☆ :)
Je suis Charlie!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: Regex Optional capture doesn't (updated)
by NetWallah (Canon) on Oct 05, 2017 at 17:40 UTC | |
by LanX (Saint) on Oct 05, 2017 at 17:47 UTC | |
by NetWallah (Canon) on Oct 05, 2017 at 17:57 UTC | |
by LanX (Saint) on Oct 05, 2017 at 18:07 UTC | |
by NetWallah (Canon) on Oct 05, 2017 at 18:33 UTC |