How does string.replaceAll() work?

java, regex, replaceall, string

Solution

- You need `\\` for a single `\` character in regex

- But Java string also interprets backslash therefore you need to escape each `\` for String hence you need 2+2=4 backslashes to match a single `\` (2 for String and 2 for regex engine)

- Also note that 2nd argument to `String#replaceAll` method is also interpreted by regex engine due to potential presence of back-references and that is the reason same regex rules apply for replacement string also.

- Your regex is using replacement string of a literal `\` followed by a literal `s`

Problem

I am making a program that replaces a certain part of the string. ``` String x = "hello"; x=x.replaceAll("e","\\\\s"); System.out.println(x); ``` output: h\sllo but for ``` System.out.println("\\s"); ``` output: \s why do we need extra escape characters in the first case.

Original source