Japhy, Thanks. These suggestions worked great!
At 01:18 AM 6/30/04 -0400, you wrote: >On Jun 29, David Arnold said: > >>\backans{If $x=y^{2n}$ and $z=y^{3n}_{11}$, then we can substitute >> to find a solution.} >> >>I'd like to scan the file and replace all of these with this format: >> >>\begin{answer} >>If $x=y^{2n}$ and $z=y^{3n}_{11}$, then we can substitute >>to find a solution. >>\end{answer} > >To match nested things, you probably want to use Regexp::Common, which >allows you to do that very easily: > > use Regexp::Common; > > $text =~ s< > \\ backans { > ( $RE{balanced}{-parens=>'{}'} ) > } > ><\\begin{answer}\n$1\n\\end{answer}>xg; > >The /x modifier is so that I can have extra whitespace, and the /g >modifier means "do it globally". The %RE hash is quite magical -- see the >Regexp::Common docs for an explanation. The module isn't standard, >though, so you'd have to download it from CPAN yourself. > >If you want a stand-alone solution, you can have one if you make use of >some of Perl's special regex constructs: > > my $rx; # must be declared first... > $rx = qr[ > (?: > (?> [^{}\\]+ | \\. ) > | > { (??{ $rx }) } > )* > ]xs; > $text =~ s/\\backans{($rx)}/\\begin{answer}\n$1\n\\end{answer}/g; > >Its primary trick is the (??{ ... }) assertion, which evaluates its >contents as PART of the regex to match. Since its contents are $rx >itself, it basically creates an automatically deeply-enough nested regex >for you on the fly. > >-- >Jeff "japhy" Pinyan [EMAIL PROTECTED] http://www.pobox.com/~japhy/ >RPI Acacia brother #734 http://www.perlmonks.org/ http://www.cpan.org/ >CPAN ID: PINYAN [Need a programmer? If you like my work, let me know.] ><stu> what does y/// stand for? <tenderpuss> why, yansliterate of course. > > > > >-- >To unsubscribe, e-mail: [EMAIL PROTECTED] >For additional commands, e-mail: [EMAIL PROTECTED] ><http://learn.perl.org/> <http://learn.perl.org/first-response> > > > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>