如何在Java正则表达式中表达“:”,但不能以“ \”开头?
如何在Java正则表达式中表示“无前缀”?例如,我只想搜索“:”,但仅在它不直接以“ \”开头时。我怎样才能做到这一点?
回答:
在后面使用负数:
"(?<!\\\\):"
四个反斜杠的原因是:
- 反斜杠是正则表达式中的特殊字符,因此您需要正则表达式
\\
来匹配单个反斜杠。 - 必须在Java字符串中对反斜杠进行转义,因此上述每个反斜杠必须都写为
\\
,总共为四个。
示例代码:
Pattern pattern = Pattern.compile("(?<!\\\\):");Matcher matcher = pattern.matcher("foo\\:x bar:y");
if (matcher.find()) {
System.out.println(matcher.start());
}
输出:
10
以上是 如何在Java正则表达式中表达“:”,但不能以“ \”开头? 的全部内容, 来源链接: utcz.com/qa/406437.html