如何在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

回到顶部