Regular expression to match a backslash followed by a quote
If you don't need any of regex mechanisms like predefined character classes \d, quantifiers etc. instead of replaceAll
which expects regex use replace
which expects literals
str = str.replace("\\\"","\"");
Both methods will replace all occurrences of targets, but replace
will treat targets literally.
BUT if you really must use regex you are looking for
str = str.replaceAll("\\\\\"", "\"")
\
is special character in regex (used for instance to create \d
- character class representing digits). To make regex treat \
as normal character you need to place another \
before it to turn off its special meaning (you need to escape it). So regex which we are trying to create is \\
.
But to create string literal representing text \\
so you could pass it to regex engine you need to write it as four \
("\\\\"
), because \
is also special character in String literals (part of code written using "..."
) since it can be used for instance as \t
to represent tabulator.
That is why you also need to escape \
there.
In short you need to escape \
twice:
- in regex
\\
- and then in String literal
"\\\\"
You don't need a regular expression.
str.replace("\\\"", "\"")
should work just fine.
The replace
method takes two substrings and replaces all non-overlapping occurrences of the first with the second. Per the javadoc:
public String replace(CharSequence target, CharSequence replacement)
Replaces each substring of this string that matches the literal target sequence with the specified literal replacement sequence. The replacement proceeds from the beginning of the string to the end, for example, replacing
"aa"
with"b"
in the string"aaa"
will result in"ba"
rather than"ab"
.