Jeff 'Japhy' Pinyan wrote: > > On Feb 5, David Mamanakis said: > > > >I am building a parsing routine, and am using a regular expression, which > >works, EXCEPT when I need to EXCLUDE certain things... > > > >$right =~ s/A/X/g; > > > >However, I may need to exclude this replacement in some of the values of > >$right... > > > >Anything found between < and > SHOULD NOT be replaced. \<.*\> > >Anything found between & and ; SHOULD NOT be replaced. \&.*\; > >Anything found between {$ and } SHOULD NOT be replaced. \{$.*\} > >Anything found between < and = SHOULD NOT be replaced. \<.*\= > > Here's a crafty trick (from DALnet #perl a couple of minutes ago)... > > $text =~ m{(<.*?>|&.*?;|{\$.*?}|<.*?=)|A}{$1 || "X"}seg; ^ ^ s
> Basically, if it's a special case, it's matched and put in $1, and if it's > "A", it's matched but $1 is undefined. Then, on the right-hand side, we > use $1 if it has a value, and "X" otherwise. > > The /s is so that . matches newlines, the /e is so that $1 || "X" is > evaluated as code, and the /g is for all matches. > > It kinda sounds like you're working with HTML and some template thing, > though... you might want to use a full HTML parser instead. John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]