|XP is just a number|
I don't remember regex seeming this hard beforeby danderson (Beadle)
|on Jun 15, 2004 at 00:08 UTC||Need Help??|
danderson has asked for the wisdom of the Perl Monks concerning the following question:
I am thoroughly stuck.
Suppose one was to have a string formatted like so: "<a a> a <a>" and one wanted to translate every character inside <>s to upper case (it's a much simplified version of what I'm actually doing - I figure, no point in cluttering up the quesion with [^\(\)-]s etc. Oops, too late.)
How do you go about this? Non-greedy matching won't work, because <>s can nest. That is, "<<a> a> a <a>" should have every char except the third 'a' modified. Non-greedy would do the first and last. Greedy will do all.
So I've been thinking that the solution must be to iterate or recurse over the string char-by-char, but I'm loathe to sinking to C-array style string parsing. Heck, I'm not even sure how to handle strings char-by-char in Perl.
Is that the only solution? Or is there a regex trick that I don't know of that makes this simple?