0

到目前为止,我有这个:

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

1 回答 1

1

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

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

分支重置功能的主要兴趣在于内部的捕获组具有相同的编号。

根据 George Reith 的评论,您必须为非括号情况找到好的字符类。[^\s;]在这里,如果遇到空格或分号,我选择停止。

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

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

另一种方式:(If Then else)

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

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

于 2014-01-19T14:24:09.503 回答