NetWallah has asked for the wisdom of the Perl Monks concerning the following question:
Attempting to do this with a single regex gets me either the first, or last arg - I cant seem to handle a variable (can be zero) number of arguments.
Given:
I am trying to extract:$cmd=q|&COMPAREEQUAL(First-param.one, Second.param,Third-param)|;
Here is what I have tried:
Including the trailing asterisk gives me the last param. Excluding it gives me the first.perl -e '$cmd=q|&COMPAREEQUAL(First-param.one, Second.param,Third-para +m)|; print qq|$_;\n| for $cmd=~/.(\w+)(?:[\s\(,]+([^\s,!@#\$%&\*]*))*/'
It is getting increasingly obvious that I am not approaching this regex correctly. Please enlighten. Thanks.
The call can have zero arguments. Arguments can contain pretty much anything, other than close-paren , white-space or comma or some nasty side-effect-inducing chars. They are not quoted.
Update 1: This regex gives better results (3 args found), but , for some reason, it does not match the "." in the second.param. Most likely it is because it is using the (\w+) to match the second param. I'm confused about how to repeat only the second part of the regex - the attempt with the non-capturing paren does not seem to repeat that group.
$cmd=~/.(\w+)(?:[\s(,]+([^\s,!\()]*))/g
I hope life isn't a big joke, because I don't get it.
-SNL
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: regex extraction for variable number of args
by kcott (Archbishop) on Jul 21, 2012 at 07:14 UTC | |
by NetWallah (Canon) on Jul 21, 2012 at 14:13 UTC | |
by Corion (Patriarch) on Jul 21, 2012 at 14:24 UTC | |
by NetWallah (Canon) on Jul 21, 2012 at 14:46 UTC | |
by Corion (Patriarch) on Jul 22, 2012 at 07:15 UTC | |
|
Re: regex extraction for variable number of args
by aitap (Curate) on Jul 21, 2012 at 07:38 UTC | |
|
Re: regex extraction for variable number of args
by clueless newbie (Curate) on Jul 21, 2012 at 11:01 UTC | |
by clueless newbie (Curate) on Jul 22, 2012 at 14:33 UTC | |
|
Re: regex extraction for variable number of args
by Anonymous Monk on Jul 21, 2012 at 07:18 UTC |