作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下模式编译表达式在 IntelliJ 中会出错,即使该表达式在 Java (1.8) 中编译并运行良好:
Pattern.compile("\\", Pattern.LITERAL);
\
的所有出现在带有 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);
}
s.replace("\\", "\\\\")
不过,IntelliJ 并没有提示,但出于性能原因(要处理 100 MB 的数据),我需要使用预编译模式。
最佳答案
你在那里有双重转义问题。 Java 需要两个反斜杠\才能让一个反斜杠出现在您的字符串中。正则表达式也有反斜杠转义,这样正则表达式中的两个反斜杠变成了一个反斜杠以进行模式匹配。
尝试转义两次:
Pattern.compile("\\\\", Pattern.LITERAL);
关于java - IntelliJ 说 "\\"(匹配单个反斜杠)是 Pattern.compile 的非法/不受支持的转义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53496078/
我是一名优秀的程序员,十分优秀!