in reply to Global Regex sans //g
With the regexp that you posted:
The reason is that when the engine first gets to the print statement, the match is still succeeding, so the print proceeds; but, the first match eventually fails, because of the /, so the engine starts searching again, and finds (and prints) the second match. I'm not sure if this answers your question, but at least it illustrates what appears like an iteration.'<a /><b >' =~ /<([\w\d]+)\s+(?{ print $^N })\s*?>/; __END__ ab
BTW, \w implies \d, so [\w\d] is redundant.
Update: Also, if in the regexp in Obfuscated regexp you get rid of the \1 at the very end, then the print statements get executed only once. Clearly this \1 is what causes the successive matches to fail, thus forcing the engine to start searching again. Once it is removed, the match succeeds, and the engine stops.
the lowliest monk
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Global Regex sans //g
by eibwen (Friar) on May 02, 2005 at 05:03 UTC | |
by tlm (Prior) on May 02, 2005 at 09:26 UTC | |
by ysth (Canon) on May 02, 2005 at 12:38 UTC |