I'd use separate regexes. But if you insist on using a single
regex, (?{ }) is the way to go. I don't understand
this "I want to do X. I know it can be done using Y or Z, but I
don't want to either Y or Z. How do I do X?". What if, like in
this case, both Y and Z are good ways to do X?
Abigail
Comment on Re: Determing what part of a regex matched.
To clarify I didn't say that I will not use Y or Z. If these are my only two hoices I'll pick one and go with it. I was hoping that (and desperately seeking) there is a happy medium that I'm missing because both have their issues. As I understand it using multiple regexs to evalute one string is less efficient then one. Besides having some bad experiences with ?{ } having is marked as "highly experimental, and may be changed or deleted without notice" in the Perldocs doesn't inspire confidence.
As
I understand it using multiple regexs to evalute one string is less efficient then one.
Well, it would be comparing multiple simple regexes that won't
backtrack versus a single more complex one that will often
backtrack. So, while it might be less efficient, it won't be
as bad as you think it is. Besides, do you really have to
worry about this? Are you doing the parsing in a thight loop?
Did you benchmark the two alternatives? You didn't show the
code of both ways, did you actually try them? Is the rest of
your program finished and peephole optimizations are now being
called for?