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>...