2

我有很多PHP类文件,其中包含像findFoo()这样的方法。我想查找(通过RegEx搜索我的IDE或grep)所有这些事件,以便用find()替换它们。一个适当的正则表达式将是find[a-zA-Z0-9]+\(。但是有一些方法(例如findBarByBuz())我想从我的搜索中排除。它的名字中带有“By”或“With”。如何排除RegEx字符串中间的字符串?

如何建立RegEx,匹配"find" + "stringWithoutByAndWithoutWith" + "("等字符串?

回答

2

可以使用负前瞻:

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

RegEx Demo

(?!\w*(?:by|with))为负先行当bywith后0或多个单词字符是失败的比赛。 \w相当于[a-zA-Z0-9_]

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

+1

非常感谢!只需要注意一下:你能否删除'-',这里没有必要。不能这样做,因为SO编辑需要影响leas'6'字符。 – automatix

+0

是的,确定完成了。 – anubhava