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]

Reply via email to