Hallo, ich habe folgendes Problem mit RegEx, mal wieder. Ich möchte bestimmte Wörter (gespeichert in der Variable st, siehe unten) in einer HTML-Seite mit einem "Span"-Tag versehen, was wunderbar klappt. Das Ersetzen soll aber nur außerhalb von HTML-Tags durchgeführt werden. In Java sieht das so aus:
Nun möchte ich, dass diese Tags wahlweise in HTML-Seiten ersetzt werden (siehe oben), oder aber, wenn der "Quelltext" im UBB-Format vorliegt, das Ersetzen nicht innerhalb von UBB-Tags vorgenommen wird. Im Grunde müsste also das Erkennen von < und > durch [ und ] ersetzt werden. Aber: an welcher Stelle?
Ich hab folgendes probiert, in Abwandlung des Codes oben:
Klappt nicht mit UBB-Tags.
Mein gesamter Code sieht so aus:
Das Ersetzen von Begriffen außerhalb von HTML-Tags funktioniert, das Ersetzen von Begriffen außerhalb von UBB-Tags funktioniert leider nicht, denn die Begriffe werden (mit dem obigen Code) auch innerhalb von UBB-Tags ersetzt.
Frage also: Wie lautet die RegEx-Formel für UBB-Tags, sprich das Ersetzen soll nicht innerhalb von [ und ] passieren?
Danke für eure Hilfe!
Java:
dummy = dummy.replaceAll("(?i)"+st+"(?![^<>]*>)", "<span "+cssclass+">$0</span>");
Nun möchte ich, dass diese Tags wahlweise in HTML-Seiten ersetzt werden (siehe oben), oder aber, wenn der "Quelltext" im UBB-Format vorliegt, das Ersetzen nicht innerhalb von UBB-Tags vorgenommen wird. Im Grunde müsste also das Erkennen von < und > durch [ und ] ersetzt werden. Aber: an welcher Stelle?
Ich hab folgendes probiert, in Abwandlung des Codes oben:
Java:
dummy = dummy.replaceAll("(?i)"+st+"(?![^\\[\\]]*>)", "<span "+cssclass+">$0</span>");
Klappt nicht mit UBB-Tags.
Mein gesamter Code sieht so aus:
Java:
if (!isUBB) {
dummy = dummy.replaceAll("(?i)"+st+"(?![^<>]*>)", "<span "+cssclass+">$0</span>");
}
else {
dummy = dummy.replaceAll("(?i)"+st+"(?![^\\[\\]]*>)", "<span "+cssclass+">$0</span>");
}
Das Ersetzen von Begriffen außerhalb von HTML-Tags funktioniert, das Ersetzen von Begriffen außerhalb von UBB-Tags funktioniert leider nicht, denn die Begriffe werden (mit dem obigen Code) auch innerhalb von UBB-Tags ersetzt.
Frage also: Wie lautet die RegEx-Formel für UBB-Tags, sprich das Ersetzen soll nicht innerhalb von [ und ] passieren?
Danke für eure Hilfe!
Zuletzt bearbeitet: