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]