0

次の値を見つけたい

PROCEDURE test {
        test { }
}

から:

test {
    PROCEDURE test {
        test { }
    }
}

私の現在の正規表現は次のとおりです。

PROCEDURE.*?{.*?(\}){2}

しかし、それは一致しません。誰かが私がこれをどのように達成できるか考えていますか?

4

2 に答える 2

1

{}の間のfirst {とのペアを一致させる必要がありlast }ます。

この正規表現を試すことができます:-

PROCEDURE[^{]*[{](?:[^{]*[{][^}]*[}])*[^}]*[}]

中括弧を文字クラス内に囲んでいるので、それらをエスケープする必要はありません。また、で、最初に自動的に停止するため、一致する[^{]*必要はありません。reluctant{

于 2012-12-08T09:58:37.250 に答える
1

この正規表現はどうですか?

PROCEDURE\s+\w+\s*\{(?:.*?\{.*?\})*.*?\}

{}のペアと一致します。

ただし、プロシージャに中括弧を含む文字列またはコメントが含まれている場合、失敗します。

于 2012-12-08T09:59:54.600 に答える