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

时间:2016-05-05 21:55:52

标签: regex regex-negation regex-lookarounds negative-lookahead negative-lookbehind

我有很多PHP类文件,其中包含findFoo()等方法。我想找到(使用我的IDE或grep的RegEx搜索)所有这些出现,以便用find()替换它们。适当的RegEx为find[a-zA-Z0-9]+\(。但是有一些方法(例如findBarByBuz())我想从搜索中排除。它是" By"或" With"在名称中。

如何构建一个与"find" + "stringWithoutByAndWithoutWith" + "("等字符串匹配的RegEx?

1 个答案:

答案 0 :(得分:2)

您可以使用否定前瞻:

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

RegEx Demo

在0或更多字符后找到(?!\w*(?:by|with))by时,

with会导致匹配失败。 \w相当于[a-zA-Z0-9_]

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