Mau*_*ren 8 java regex intellij-idea
以下模式编译表达式在 IntelliJ 中出错,即使该表达式在 Java (1.8) 中编译并运行良好:
Pattern.compile("\\", Pattern.LITERAL);
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码来转义\String 中所有出现的 double \\,如下所示:
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);
}
Run Code Online (Sandbox Code Playgroud)
s.replace("\\", "\\\\")不过,使用IntelliJ 时不会抱怨,但出于性能原因(要处理 100 MB 的数据),我需要使用预编译模式。
可能是一个错误,因为 IntelliJ 说 \b (退格)是字符串文字中的非法转义序列。为什么??
你那里有双重转义问题。Java 需要两个反斜杠 \ 才能使字符串中出现一个反斜杠。正则表达式还具有反斜杠转义功能,以便正则表达式中的两个反斜杠成为模式匹配的一个反斜杠。
尝试转义两次:
Pattern.compile("\\\\", Pattern.LITERAL);
Run Code Online (Sandbox Code Playgroud)
这会将模式作为正则表达式中的“\”来匹配单个退格键。
| 归档时间: |
|
| 查看次数: |
2217 次 |
| 最近记录: |