次の値を見つけたい
PROCEDURE test {
test { }
}
から:
test {
PROCEDURE test {
test { }
}
}
私の現在の正規表現は次のとおりです。
PROCEDURE.*?{.*?(\}){2}
しかし、それは一致しません。誰かが私がこれをどのように達成できるか考えていますか?
{
と}
の間のfirst {
とのペアを一致させる必要がありlast }
ます。
この正規表現を試すことができます:-
PROCEDURE[^{]*[{](?:[^{]*[{][^}]*[}])*[^}]*[}]
中括弧を文字クラス内に囲んでいるので、それらをエスケープする必要はありません。また、で、最初に自動的に停止するため、一致する[^{]*
必要はありません。reluctant
{
この正規表現はどうですか?
PROCEDURE\s+\w+\s*\{(?:.*?\{.*?\})*.*?\}
{}のペアと一致します。
ただし、プロシージャに中括弧を含む文字列またはコメントが含まれている場合、失敗します。