0

私は使っている(if\()(.*)(?!\{)

機能していないようです...

if タイプの例:

if( ( Collection.containsKey( primaryKeyValue ) ) ) {

私も排除したいelse if

4

2 に答える 2

3

スコープのifない は、 で終了する必要があります;。したがって、 がある前に;の後に どこかに があるかどうかを確認できます。この正規表現はそれを行う必要があります:if{

(if[^{;]*;)

これには複数行の正規表現が必要であることに注意してください。

于 2013-01-02T07:58:38.503 に答える
3

この正規表現は、(ほとんどの場合)を使用せずifに終了するステートメントに一致します。;{

\bif\s*\([^\{]+;

( \bif が単独で、 zif のような別の単語の一部ではないことを確認するための単語境界です)。

ただし、この正規表現は信頼できません。実際、一致するif文字が条件内の文字列に存在する可能性があるため、正規表現ソリューションはここで 100% 信頼できるわけではありません。

次の例を考えてみましょう - 上記の正規表現は渡されませんが、ルールによっては明らかに問題ありません。

if (s.equals(";{;};")) { t="({;})"; }

そして、あなたのルールでは間違っているこの例を渡します:

if (s.equals("{;}")) t="({;})";

ここで堅実なパフォーマンスが必要な場合は、独自のコード パーサーを作成する必要があります。

于 2013-01-02T08:28:29.407 に答える