[ILUG] Perl Regex Help Needed

kae at verens.com kae at verens.com
Sun Sep 11 18:45:52 IST 2005


> while ( $trivia =~ m/^[QA] (\d)+\) (.*)/gms) {
>     print "Matched ($1) and ($2)\n";
> }
>
> But that doesn't work either. It greedily grabs *everything*.

The problem is that you're not telling it where to stop matching.

Maybe this?

while ( $trivia =~ m/^Q (.*?)^A (.*?)^Q/gms) {
    print "Matched ($1) and ($2)\n";
}

that might work, but it will fall down on the last one. I don't know what
the character for "EOF" is. If you do, then substitute the last ^Q for
(^Q|EOF) with the EOF obviously fixed, and that /might/ do it (been a
while since I wrote Perl).

Kae



More information about the ILUG mailing list