Search code examples
javaregexstringpatternsyntaxexception

Replacing single '\' with '\\' in Java


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);
    }
}

Solution

  • String.replaceAll(String,String) is regex.
    String.replace(String,String) will do what you want.

    The following...

    String str = "C:\\Documents and Settings\\HUSAIN\\My Documents\\My Palettes";
    System.out.println(str);
    str = str.replace("\\", "\\\\");
    System.out.println(str);
    

    Produces...

    C:\Documents and Settings\HUSAIN\My Documents\My Palettes
    C:\\Documents and Settings\\HUSAIN\\My Documents\\My Palettes