如何排除 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
当 by
或 with
在 0 个或多个单词字符后找到时, (?!\w*(?:by|with))
是否定前瞻,使匹配失败。 \w
等同于 [a-zA-Z0-9_]
.
/i
用于不区分大小写的匹配。
我有很多 PHP class 文件,其中包含像 findFoo()
这样的方法。我想找到(通过 RegEx 搜索我的 IDE 或使用 grep)所有这些事件,以便用 find()
替换它们。一个合适的 RegEx 应该是 find[a-zA-Z0-9]+\(
。但是有一些方法(例如 findBarByBuz()
)我想从我的搜索中排除。名称中带有“By
”或“With
”。
如何构建匹配 "find" + "stringWithoutByAndWithoutWith" + "("
?
你可以使用负前瞻:
/find(?!\w*(?:by|with))\w+\(/i
当 by
或 with
在 0 个或多个单词字符后找到时, (?!\w*(?:by|with))
是否定前瞻,使匹配失败。 \w
等同于 [a-zA-Z0-9_]
.
/i
用于不区分大小写的匹配。