in reply to Re^6: Regex's, parentheses, and the mysterious ( ??{ } ) operator
in thread Regex's, parentheses, and the mysterious ( ??{ } ) operator
"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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^8: Regex's, parentheses, and the mysterious ( ??{ } ) operator
by AnomalousMonk (Archbishop) on Jul 15, 2013 at 19:24 UTC |