http://www.perlmonks.org?node_id=349802


in reply to Count capturing parentheses in a compiled regexp

Nice snippet, but a couple of problems: the outer lookahead needs to be //s, else eg:

qr{( x )}x;
will fail.

Also, this will find parens in embedded code and comments and treat as captures. If that doesn't seem worth worrying about it'd be enough to add a caveat I guess, else I think you can mimic perl's simplistic parsing reasonable easily for the code (just count to the balancing close-brace). Comments may actually be the trickiest, since you'll need to know when //x is in force:

qr{ (?x: # (comment) ) (?-x: # (capture) ) }

Oops, another one: parens in [ ... ] should be ignored too; I'm not sure how easy those would be to parse, since not every ] closes the selection.

Hugo

Replies are listed 'Best First'.
Re: Re: Count capturing parentheses in a compiled regexp
by BooK (Curate) on May 02, 2004 at 15:20 UTC

    Thanks a lot for finding these shortcomings in my code. :-) I'll submit updated versions as I correct them.