找到带括号和不带括号的“require”

时间:2014-01-19 14:15:42

标签: php regex vqmod

到目前为止我有这个:

(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>

1 个答案:

答案 0 :(得分:1)

您可以使用分支重置:(?|...|...)

(require|include)(_once)?(?|\(([^)]+)\)| ([^\s;]+))

分支重置功能的主要好处是内部的捕获组具有相同的编号。

根据George Reith的评论,你必须找到非括号案例的好字符类。如果遇到白色空格或分号,我选择[^\s;]来停止。

另一种方式:(我不在乎是否有括号)

(require|include)(_once)?[( ]([^\s;)]+)

另一种方式:(如果那么其他)

(require|include)(_once)?(\()?(?(3)| )([^\s;)]+)

(最后一种方法,请注意文件名在第4组中)