Perl Programming Help:
Jul 19, 2008, 10:00 PM
Could someone help me parse this. I have the basic idea, but am really confused on the details (particularly the group paren and the stuff inside the single character brackets):
/ - start of the regex
\( - escaped open paren
( - grouping paren (not sure why we need it though)
\( - second escaped paren
[ - single character? Not sure why?
^ - beginning of the line? now i am really confused. How do you have a beginning of line after two parens?
) - end grouping paren
] - end single char
* - have 0 or more of the single char (not sure what the single char was!
.... so forth....
I got this from a quiz to parse a madlib file that had questions in it of the following form:
I wanted to eat ((a number)) hamburgers.
Any explanation would be appreciated!
Jul 20, 2008, 10:42 AM
the pattern in the center is a negated character class:
Re: [ball] /\((\([^)]*\))\)/
the ^ is not the beginning of line anchor in this context, it means to not match whatever is inside the square brackets, in this case there is a sinlge right parenthesis ')'.
So essentially it means to match zero or more of anything except a ')'. Its appears to be capturingwhatever is inside of double parenthesis:
$_ = '((this will match))';
$1 is what is matched by the grouping parenthesis in the regexp.