In my app, I'd like to remove all text in between "example"
and the first occurance after this of }
from a string. And I want to do this for all occurences. So I use this code:
myString.replaceAll("\"example\"(.+?)}", "");
However, this gives me a PatternSyntaxException
. Why? And: how do I solve it?
stack trace:
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)
...
OK, so I don't understand why this gave an exception, but it seems that what you need to do is escape the last curly brace. So instead of
you do
The first string worked for me in Java 1.7.0_51 and 1.8.0_05, so I'm not sure how this came about... But it works?