0

これまでのところ、私はこれを持っています:

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

すべてのrequire、require_once、include、およびinclude_onceをチェックしますが、次の形式である必要があります。

require(FOO)

私も見つける必要があります:

require FOO

そのため、括弧の有無、および 2 番目の例にあるスペースを考慮する必要があります。

完全なコードのスタイルは次のようになります。

<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 に答える