Apache Ant: replaceregexp und HTML

Wer mit Ants replaceregexp HTML suchen und ersetzen möchte, wird recht schnell in Fehler wie

  1. Wert des Attributs “match”, das mit Elementtyp “null” verknüpft ist, darf nicht das Zeichen “<” enthalten.
  2. Öffnendes Anführungszeichen wird für Attribut “{1}” erwartet, das mit Elementtyp “id” verknüpft ist.
  3. Auf Elementtyp “replaceregexp” müssen entweder Attributspezifikationen, “>” oder “/>” folgen.

bzw deren englischer Entsprechung

  1. The value of attribute “match” associated with an element type “null” must not contain the ‘<‘ character.
  2. Open quote is expected for attribute “{1}” associated with an element type “id”.
  3. Element type “replaceregexp” must be followed by either attribute specifications, “>” or “/>”.

stoßen. Lösung:

  1. alle “<” durch &lt; ersetzen. Mit “” escapen genügt nicht.
  2. Geöffnete Anführungszeichen müssen geschlossen werden m(
  3. Alle Anführungszeichen durch “&quot;” ersetzen. Mit “” escapen genügt nicht.

PS:

  • Um mehrere Zeilen gleichzeitig zu ersetzen, muss man – etwas uneingängig – das Flag “s” setzen.
  • Um (potentiell) verschachtelte Tags (z.B. DIV) zu ersetzen, immer nicht-“greedy” arbeiten, also z.B. mit (.*?) statt mit (.*)

Leave a Reply

Your email address will not be published. Required fields are marked *

Ich erkläre mich damit einverstanden, dass alle eingegebenen Daten und meine IP-Adresse zum Zweck der Spamvermeidung durch das Programm Akismet in den USA überprüft und gespeichert werden. Weitere Informationen zu Akismet und Widerrufsmöglichkeiten.