到目前为止我有这个:
(require|include)(_once)?\(([^)]+)
它检查所有require,require_once,include和include_once但它需要采用以下格式:
require(FOO)
我还需要找到:
require FOO
因此需要考虑括号和不带括号以及第二个例子中的空格。
完整代码的样式是:
<search position="replace" regex="true"><![CDATA[~(require|include)(_once)?\(([^)]+)~]]></search>
<add><![CDATA[$1$2(VQMod::modCheck($3)]]></add>
答案 0 :(得分:1)
您可以使用分支重置:(?|...|...)
(require|include)(_once)?(?|\(([^)]+)\)| ([^\s;]+))
分支重置功能的主要好处是内部的捕获组具有相同的编号。
根据George Reith的评论,你必须找到非括号案例的好字符类。如果遇到白色空格或分号,我选择[^\s;]
来停止。
另一种方式:(我不在乎是否有括号)
(require|include)(_once)?[( ]([^\s;)]+)
另一种方式:(如果那么其他)
(require|include)(_once)?(\()?(?(3)| )([^\s;)]+)
(最后一种方法,请注意文件名在第4组中)