In meiner App möchte ich den gesamten Text dazwischen entfernen "example"
und das erste Vorkommen nach diesem }
von einer Schnur. Und ich möchte dies für alle Fälle tun. Also benutze ich diesen Code:
myString.replaceAll(""example"(.+?)}", "");
Das gibt mir jedoch einen PatternSyntaxException
. Warum? Und: wie löse ich es?
Stapelverfolgung:
05-10 23:32:16.129: W/System.err(724): java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 16:
05-10 23:32:16.129: W/System.err(724): "example"(.+?)}
05-10 23:32:16.129: W/System.err(724): ^
05-10 23:32:16.159: W/System.err(724): at java.util.regex.Pattern.compileImpl(Native Method)
05-10 23:32:16.190: W/System.err(724): at java.util.regex.Pattern.compile(Pattern.java:400)
05-10 23:32:16.190: W/System.err(724): at java.util.regex.Pattern.<init>(Pattern.java:383)
05-10 23:32:16.219: W/System.err(724): at java.util.regex.Pattern.compile(Pattern.java:374)
05-10 23:32:16.219: W/System.err(724): at java.lang.String.replaceAll(String.java:1784)
...
Antworten:
2 für die Antwort № 1OK, also verstehe ich nicht, warum das eine Ausnahme gemacht hat, aber es scheint, dass du die letzte geschweifte Klammer entkommen musst
myString.replaceAll(""example"(.+?)}", "");
Sie machen
myString.replaceAll(""example"(.+?)\}", "");
^^
Der erste String funktionierte für mich in Java 1.7.0_51 und 1.8.0_05, also bin ich mir nicht sicher, wie das zustande kam ... Aber es funktioniert?
0 für die Antwort № 2
"\"example\"(.+?)}"
sollte arbeiten. Ihre Zeichenfolge wird in ein Muster umgewandelt, was bedeutet, dass die Escape-Zeichen zweimal verarbeitet werden. Also müssen Sie tippen \
zum und
"
zum "
.
Hier ist das Beispiel http://www.myregextester.com/?r=ab9d1f06