On Friday, August 10, 2001, at 12:01 AM, allan wrote:

> hi
>
> i want to do a global replace om a search string _unless_ the string is
> encapsulated in <script></script> tags.
> i have a file that looks like this
>
> <script>
> type=text1
> type=text2
> </script>
>
> type=text3
> type=text4
>
> <script>
> type=text5
> type=text6
> </script>
>
> type=text7
> type=text8
>
>
> and a program that looks like this.
> apparenly somthing is wrong as it only does a replace on the last types
> (text7 and text8) when it should also replace text3 and text4.
> maybe the whole approach is wrong?
>
> allan
>
> #!perl -w
>
> open FILE, "file.txt";
> local $/;
> $_ = <FILE>;
>
> s/(?!<script[^>]*>.*)         #as long a string doesnt start with 
> <script ...> and
> ([^\s"'<>%()]+=)                      #string does match one or more characters 
>which are
> not in this class and is followed by =, and
> ([^\s"'<>]+)                          #string match one or more characters which are 
>not in
> this class and
> (?!.*<\/script>)                      #as long as string doesnt end with <...script>
> /$1"$2"/igsx;
>
> print;

I think you should make the look ahead less greedy like
(?!.?*<\/script>)
or it will keep on til the last </script>...

Reply via email to