I have a string and when I try to run the replaceAll
method, I am getting this strange error:
String str = "something { } , op";
str = str.replaceAll("o", "\n"); // it works fine
str = str.replaceAll("{", "\n"); // does not work
and i get a strange error:
Exception in thread "main" java.util.regex.PatternSyntaxException:
Illegal repetition {
How can I replace the occurrences of "{"
?
A {
is a regex meta-character used for range repetitions as {min,max}
. To match a literal {
you need to escape it by preceding it with a \\
:
str = str.replaceAll("\\{", "\n"); // does work
If you really intend to replace single characters and not regexes (which is what you seem to want to do here), you should use .replace()
, not .replaceAll()
. In spite of its name, .replace()
will replace ALL occurrences, not just the first one.
And in case you wonder, String
implements CharSequence
, so .replace("{", "\n")
will work.
Escape it:
str = str.replaceAll("\\{", "\n");
This is needed since the first argument to replaceAll()
is a regular expression, and {
has a special meaning in Java regular expressions (it's a repetition operator, hence the error message).