"You have to properly account for all capturing groups in the overall regex..."

I did not yet work through your example program or explore the references you gave me, but your sentence above jolted my brain into some semblance of activity. Yes, it makes a lot of sense that every time the recursive regex satisfies another capture group, it uses yet another capture variable. So I printed out a bunch of them:

$ cat p7.pl #!/opt/perl5.16/bin/perl use strict; use warnings; our $paren = qr/ # Need declared variable with use stri +ct. \( ( [^()]+ # Not parens | (??{our $paren}) # Another balanced group (not interpol +ated yet) )* \) /x; # 'x' means ignore whitespace, comment +s. my $stuff = "On the outside now then (we go( in( and in (&stop)(awhile +) ( further ))) but still (here) ) and now ((for a while)) we are out + again."; $stuff =~ /($paren)[^()]*($paren)/; print "-original-\n"; print "$stuff\n"; print "1---------\n"; print 'X' . $1 . 'X' . "\n"; print "2---------\n"; print 'X' . $2 . 'X' . "\n"; print "3---------\n"; print 'X' . $3 . 'X' . "\n"; print "4---------\n"; print 'X' . $4 . 'X' . "\n"; print "5---------\n"; print 'X' . $5 . 'X' . "\n"; print "6---------\n"; print 'X' . $6 . 'X' . "\n"; print "----------\n"; $ ./p7.pl -original- On the outside now then (we go( in( and in (&stop)(awhile) ( further ) +)) but still (here) ) and now ((for a while)) we are out again. 1--------- X(we go( in( and in (&stop)(awhile) ( further ))) but still (here) )X 2--------- X X 3--------- X((for a while))X 4--------- X(for a while)X 5--------- Use of uninitialized value $5 in concatenation (.) or string at ./p7.p +l line 31. XX 6--------- Use of uninitialized value $6 in concatenation (.) or string at ./p7.p +l line 33. XX ---------- $

So the recursive regex evaluation set $1 through $4! Thanks, this makes more sense now.


In reply to Re^7: Regex's, parentheses, and the mysterious ( ??{ } ) operator by Clovis_Sangrail
in thread Regex's, parentheses, and the mysterious ( ??{ } ) operator by Clovis_Sangrail

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.