当前位置: 首页 > 面试题库 >

如何在Java正则表达式中表达“:”,但不能以“ \”开头?

贾兴学
2023-03-14
问题内容

如何在Java正则表达式中表示“无前缀”?例如,我只想搜索“:”,但仅在它不直接以“ \”开头时。我怎样才能做到这一点?


问题答案:

在后面使用负数:

"(?<!\\\\):"

四个反斜杠的原因是:

  • 反斜杠是正则表达式中的特殊字符,因此您需要正则表达式\\来匹配单个反斜杠。
  • 必须在Java字符串中对反斜杠进行转义,因此上述每个反斜杠必须都写为\\,总共为四个。

示例代码:

Pattern pattern = Pattern.compile("(?<!\\\\):");
Matcher matcher = pattern.matcher("foo\\:x bar:y");
if (matcher.find()) {
    System.out.println(matcher.start());
}

输出:

10


 类似资料:
  • 如何在不包含连续子字符串baa的字母表{a,b,c}上表达正则表达式?

  • 问题内容: 我正在尝试输入之间的内容,我的模式没有做正确的事,请帮忙。 下面是sudocode: 要求的输出: 之一 二 三 问题答案: 先行使用并在循环中使用,而不是: 看到它在线上工作:ideone 但是最好在这里使用split: 看到它在线上工作:ideone

  • 主要内容:正则表达式支持字符正则表达式(Regular Expression)又称正规表示法、常规表示法,在代码中常简写为 regex、regexp 或 RE,它是计算机科学的一个概念。 正则表达式是一个强大的字符串处理工具,可以对字符串进行查找、提取、分割、替换等操作,是一种可以用于模式匹配和替换的规范。一个正则表达式就是由普通的字符(如字符 a~z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的

  • 我正在尝试使用python中的正则表达式。我构建了正则表达式,如下所示。我知道用于匹配搜索字符串的开头。我已使用包含多个的匹配模式构建框架,但我不确定将如何尝试匹配搜索字符串中的模式。 我预计会引发错误,关于无效的正则表达式,但它不会引发任何错误,也不会返回任何匹配项。 所以,我的问题是或是有效的正则表达式吗?

  • 问题内容: 我需要一个不以点开头或不以开头的正则表达式。 此正则表达式有效,但在第一个条件下失败;它不以点开头: 例如:应为有效字符串,但失败。 问题答案: 从上一个问题开始,您应该可以使用: 但是,如果您希望能够匹配1个字符串,则需要否定先行: 而且,如果您也想匹配空字符串,只需使用代替即可。

  • 在使用带有xpath的正则表达式时,我对jayway jsonpath有意见。以下是我的json: 下面是我的表达式:resources[?(/_test1.CREDITPRINTFILE/.test(@.name))] 我得到以下错误: 我也尝试在在线评估工具中使用同样的表达:https://jsonpath.herokuapp.com/ Jayway-给出了相同的错误-预期路径节点Gatlin