In addition to showing me that I need to renumber my backreferences properly, I still get no match with the generated regex, qr/(.*)((?=\d+))(A)\2/, because you can't swap a lookaround for a real match.
First, I think you want (.*?), not (.*).
Second, the biggest problem with reversing against the string is the need to have the parsing be ( 4, 321, 'A' ), not ('', 4321, 'A' ) as will have to happen with the \d+. The issue is you need to know what the stuff in \2 is before you match ((?=\d+)).
Also, positive-lookahead is not the direct reversal of negative-lookbehind. For one thing, it's a zero-width assertion that will fail as written because you can't have numbers and letters in the same position. I think it's better reversed as qr/(.*?)\2(A)((?=\d+))/, which makes no sense because \2 isn't populated when it needs to be.
(Incidentally, your suggested pattern is illegal, because the lookbehind is variable-length.)
Yes, it is. But, that's one of the main considerations you gave for wanting to have a regex reverser ...
- In general, if you think something isn't in Perl, try it out, because it usually is. :-)
- "What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against?"
| [reply] [d/l] [select] |
| [reply] [d/l] |
I don't know about the YAPE::Regex tree, but the rule seems to be: If you have a negative lookbehind and a backreference to it, it stays in the same position, but becomes a positive lookahead on the backreference to its mirror'ed element.
- In general, if you think something isn't in Perl, try it out, because it usually is. :-)
- "What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against?"
| [reply] |