java - 如何在 Eclipse 正则表达式搜索中首先匹配检查前驱?

标签 java regex string eclipse

我想准备一个模式来找出这个词:

footer

我想涵盖以下案例:

  • footer- 之外的其他字符开始
  • footer 可能是行中的第一个子字符串

下面的正则表达式示例并不像我想象的那样工作:

(?:[^-]|^)footer

同样的:

(?:[^-]footer|^footer)

有人可以澄清为什么上面的示例不能解决问题并提供一个有效的示例模式吗?

最佳答案

(?:[^-]|^)footer模式匹配除 - 之外的任何字符或字符串开头,然后匹配 footer 。因此,该字符与 [^-] 匹配将成为比赛的一部分。与 (?:[^-]footer|^footer) 相同.

您可以使用(?<!-) negative lookbehind :

(?<!-)footer

或者使用单词边界来匹配整个单词

\b(?<!-)footer\b

请参阅regex demo .

(?<!-)如果有 - 则匹配失败紧邻当前位置的左侧。

关于java - 如何在 Eclipse 正则表达式搜索中首先匹配检查前驱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49770270/

相关文章:

Java:无法从其他类在 TextArea 上打印

Java 启动画面

regex - Linux sed - 需要帮助来弄清楚为什么模式匹配不起作用

php - 获取字符串中每个单词的第一个字母

c# - 比较 C# 中的字符串与静态正则表达式?

java - 递归方法调用在 kotlin 中会导致 StackOverFlowError,但在 java 中不会

java - 为什么 Collections.sort 使用合并排序而不是快速排序?

c - C 中的右对齐零填充字符串

java - JTextPane : Identifying Strings

javascript - 如何使用node js从目录中获取所需类型的文件和所需内容?