正则表达式:试图匹配两个字符串*没有*中间的某个字符

Regex: trying to match two strings *without* a certain char in between

我正在尝试匹配一行 w/"function" 后跟 "insert" 作为一个完整的单词, 没有“$”之间。这意味着它应该匹配

function static insert()

但不是

function insertRecord($insert)

我试过否定 lookahead/behind 例如:

function.*(?!$).*\binsert\b

但什么都没有。

我一直在 Ubuntu 15.10 上的 grep 2.6.3 和 PhpStorm 上尝试这个(后者我存货较少)。是的,我一直将我的正则表达式放在 grep 的单引号中。我也试过https://www.regex101.com,这似乎同意,我用错了。我什至在测试网站上试过缩写版本,但我不知道

的哪一部分
function.*(?!$)

没看懂

在我所有的实验中,一个一致的问题是它总是在 "insert".

之前出现“$”的行上

试试这个:

function[^$]*\binsert\b

这只是使用否定字符 class [^$] 来限制字符之间的字符以禁止任何美元符号。

您已经知道在 "insert" 周围需要词边界 \b