如何排除 RegEx 字符串中间的字符串?

How to exclude a string in the middle of a RegEx string?

我有很多 PHP class 文件,其中包含像 findFoo() 这样的方法。我想找到(通过 RegEx 搜索我的 IDE 或使用 grep)所有这些事件,以便用 find() 替换它们。一个合适的 RegEx 应该是 find[a-zA-Z0-9]+\(。但是有一些方法(例如 findBarByBuz())我想从我的搜索中排除。名称中带有“By”或“With”。

如何构建匹配 "find" + "stringWithoutByAndWithoutWith" + "("?

等字符串的正则表达式

你可以使用负前瞻:

/find(?!\w*(?:by|with))\w+\(/i

RegEx Demo

bywith 在 0 个或多个单词字符后找到时,

(?!\w*(?:by|with)) 是否定前瞻,使匹配失败。 \w 等同于 [a-zA-Z0-9_].

/i 用于不区分大小写的匹配。