Ich verwende Matcher.appendReplacement() und es funktionierte großartig, bis mein Ersatz-String ein $ 2 in sich hatte:Matcher.appendReplacement mit Literaltext
Beachten Sie, dass Schrägstriche (\) und Dollar Zeichen ($) in der Ersatzzeichenfolge kann dazu führen, dass die Ergebnisse unterschiedlich sind als wenn es als Literal Ersatz Zeichenfolge behandelt würde. Dollar Zeichen können als Verweise auf erfasste Untersequenzen behandelt werden, wie oben beschrieben , und Backslashes werden Escape-Literalzeichen in der Ersetzungszeichenfolge verwendet.
Gibt es irgendwo eine Convenience-Methode, die alle Backslashes \ und Dollarzeichen $ mit einem Backslash entfernt? Oder muss ich selbst eines schreiben? Es klingt wie es nicht so schwer ist, wäre nur schön, wenn sie gaben Sie ein> :(
edit: da sie Ihnen eine geben, ich muss replace(">:(", ":-)");
Hinweis: Dies ist kein Duplikat von "How to Text für regulären Ausdruck in Java zu entkommen". –
Entschuldigung. Ich sah, dass die # 2 Antwort zeigte, wie man quoteReplacement verwendet und nicht die Mühe machte, das Ganze zu lesen. –
Sieht aus wie ein Duplikat von http://stackoverflow.com/questions/60160/how-to-escape-text-for-regular-expression-in-java zu mir. – daveb