Следующее выражение компиляции шаблона дает ошибку в IntelliJ, хотя выражение компилируется и хорошо работает в Java (1.8):
Pattern.compile("\\", Pattern.LITERAL);
Я использую следующий код, чтобы избежать всех вхождений \
в строке с двойным \\
, например:
private final static Pattern BACKSLASH_PATTERN = Pattern.compile("\\", Pattern.LITERAL);
private final static String BACKSLASH_REPLACE = Matcher.quoteReplacement("\\\\");
private String escapeBackslashes(final String s) {
return BACKSLASH_PATTERN.matcher(s).replaceAll(BACKSLASH_REPLACE);
}
При использовании s.replace("\\", "\\\\")
IntelliJ не жалуется, но мне нужно использовать предварительно скомпилированный шаблон из соображений производительности (100 с МБ)данных для обработки).
Может быть ошибкой, как в IntelliJ говорит, что \ b (backspace) - недопустимая escape-последовательность внутри строкового литерала.Почему? ?