in reply to Re^2: Oddity with Conditional Regex
in thread Oddity with Conditional Regex
It sure seems like a bug to me.
The regexp engine was massively changed between 5.8 and 5.10. Some bugs fell through. Some were found and fixed already. I don't know about this one. 5.10.1 is expected to be released before the end of the year.
On the plus side, both 5.8 and 5.10 compiled the regexp identically according to use re 'debug';. It's the matching that differs. In both version, it finds that (.*w) only matched once, backtracks. Then it seems to forget to forget that the entire (?(...)...) failed in 5.10.
As a workaround, replacing
(?=(.*w){2})
with
(?(?=(.*w){2})|(?!))
results in the desired behaviour.
By the way, I'd place the ^ before the (?()), and I'd use grouping parens ((?:...)) instead of capturing parens ((...)).
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Oddity with Conditional Regex (bug!)
by almut (Canon) on Nov 12, 2008 at 22:32 UTC | |
by ikegami (Patriarch) on Nov 13, 2008 at 13:30 UTC | |
by almut (Canon) on Nov 13, 2008 at 15:25 UTC |