Monty: Regulärer ausdruck über mehrere Zeilen...

Ich versuche schon seit längerem einen regulären ausdruck zu verfassen der javascript teile in einem html codestück "markiert" (damit sie später ohne großen aufwand gelöscht werden können)

Codestück:

<td>
<script type="text/javascript"><!--
google_ad_client = "xxx";
//xxx
google_ad_slot = "xxx";
google_ad_width = xxx;
google_ad_height = xxx;
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>

Regulärer Ausdruck:

<script(.*)> soll ersetzt werden durch <delete-x>
und
</script> soll ersetzt werden durch </deltete-x>

wobei x durch eine laufende nummer ersetzt wird...

mein problem dabei ist das nicht alle teile erkannt werden, d.h. wenn ich den code laufen lasse, kommt nach der ersetzung sowas raus:

<td>
<delete-1><!--
google_ad_client = "xxx";
//xxx
google_ad_slot = "xxx";
google_ad_width = xxx;
google_ad_height = xxx;
//--></delete-1>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</delete-2>
</td>

d.h. das 2. <script... wird ausgelassen, wenn ich den zeilenumbruch entferne, so dass der öffnende script-tag in nur einer zeile ist, dann geht es... Sollten reguläre ausdrücke nicht über mehrere Zeilen gehen?

das hierbei für das 2. </script> tag bereits eine id vergeben wurde (obwohl es keinen öffnenden tag gibt) ist kein problem! allerdings existiert in diesem code eben der öffnende tag, wird aber nicht erkannt!

ich hab es auch schon mit <script(.*)(\n*)(.*)> probiert - das funktioniert jedoch genau so wenig...

Bin mittlerweile schon recht Ratlos, hat vllt. wer eine Idee wieso es nicht funktioniert, bzw. wie man es dazu bringen könnte dass es funktioniert?

P.S. das eretzten erfolgt mit einem simplen replaceFirst in Java, aber auch zahlreiche online regex tester (php, perl, javascript) haben das selbe verhalten

  1. Hi,

    Sollten reguläre ausdrücke nicht über mehrere Zeilen gehen?

    Das Verhalten regulärere Ausdrücke bei mehreren Zeilen hängt von den Flags s und m ab.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Das Verhalten regulärere Ausdrücke bei mehreren Zeilen hängt von den Flags s und m ab.

      leider weiß ich aber nicht so wirklich was die machen...

      s - DOTALL - da ersetzt er mir den gesamten code bis zum letzten >
      m - MULTILINE - da passiert gar nichts

      ich hab die parameter jeweils mit (?m) bzw. (?s) vor dem regex angegeben:
      (?m)(<script(.*)>)