/ / Regex-Muster SyntaxException - Java, Android, Regex, Replaceall, Patternsyntaxexception

Regex Muster SyntaxException - Java, Android, Regex, Replaceall, PatternsyntaxException

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 № 1

OK, 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