How do I replace a single '\'
with '\\'
? When I run replaceAll()
then I get this error message.
Exception in thread "main" java.util.regex.PatternSyntaxException:
Unexpected internal error near index 1 \
^
at java.util.regex.Pattern.error(Pattern.java:1713)
at java.util.regex.Pattern.compile(Pattern.java:1466)
at java.util.regex.Pattern.<init>(Pattern.java:1133)
at java.util.regex.Pattern.compile(Pattern.java:823)
at java.lang.String.replaceAll(String.java:2190)
at NewClass.main(NewClass.java:13)
Java Result: 1
My code:
public class NewClass {
public static void main(String[] args) {
String str = "C:\\Documents and Settings\\HUSAIN\\My Documents\\My Palettes";
str = str.replaceAll("\\", "\\\\");
System.out.println(str);
}
}
filePath = filePath.replaceAll(Matcher.quoteReplacement("\"), Matcher.quoteReplacement("\\"));
This one worked perfectly. filePath = C:\abc\
In a String literal,
\
must be escaped with another\
. And in a reges, a\
must also be escaped by another\\
. So, you must escape every\
four times:\\\\
.Another way is to use
Pattern.quote("\\")
(for the regex) andMatcher.quoteReplacement("\\\\")
for the replacement string.You have to first scape the
\
for the string and then scape it for the regex, it would be\\\\
for each slash.\
is also a special character in regexp. This is why you should do something like this:String.replaceAll(String,String)
is regex.String.replace(String,String)
will do what you want.The following...
Produces...
You could use
Pattern.quote
to make it easier for you to escape the value, such as:or, you can just use
String.replace
:See: Pattern.quote, String.replace and Matcher.quoteReplacement