Regular Expression im String maskieren
Rouven
- java
0 Rouven
Hello,
ich kämpfe gerade mit Regular Expressions in Java. Ausgangsszenario: Ich habe einen String, der beliebige Zeichen enthalten kann und der an bestimmten Stellen mit Keywords gespickt ist. Beispiel:
<?sometext ."und Sonderzeichen(Bla)? @@KEYWORD@@?>
Ziel:
(1) ein String, in dem alles was NICHT Keyword ist maskiert ist
(2) der String aus (1), wobei das Keyword durch eine regular Expression ersetzt ist.
Beispiel (@@KEYWORD@@ wird \w*):
<?sometext ."und Sonderzeichen(Bla)? \w*?>
Java bietet mir per Pattern.quote(String) an einen String zu maskieren - hierbei wird allerdings nicht jedes Sonderzeichen maskiert, sondern der gesamte String gequotet - im Beispiel:
\Q<?sometext ."und Sonderzeichen(Bla)? @@KEYWORD@@?>\E
Danach zieht natürlich mein \w* nicht mehr...
Frage: wie kriege ich einfach aus meinem Ausgangspunkt jedes RegExp-Sonderzeichen einzeln maskiert?
Dank euch für Tips!
MfG
Rouven
Hello,
Frage: wie kriege ich einfach aus meinem Ausgangspunkt jedes RegExp-Sonderzeichen einzeln maskiert?
Beispiel (@@KEYWORD@@ wird \w*):
*hmpf*, eine Lösung ist mir zwischenzeitlich selbst eingefallen. Anstelle mit \w* zu ersetzen, könnte ich die Quote-Begrenzer mit einpflegen, also \E\w*\Q als Ersetzungsausdruck, müsste dementsprechend zwar nicht das ursprünglich angepeilte aber ein gleichwertiges Ergebnis geben:
\Q<?sometext ."und Sonderzeichen(Bla)? \E\w*\P?>\E
MfG
Rouven