我想准备一个模式来找出这个词:
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/