正则表达式匹配括号内的所有内部括号?

时间:2012-12-08 09:54:11

标签: c# .net regex

我想找到以下值

PROCEDURE test {
        test { }
}

从:

test {
    PROCEDURE test {
        test { }
    }
}

我现在的正则表达式是:

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

但它不匹配。有谁知道我怎么能做到这一点?

2 个答案:

答案 0 :(得分:1)

您需要在{}之间匹配first {last }对。

你可以试试这个正则表达式: -

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

我在角色类中包含花括号,因此您不需要使用[^{]*来转义它们,您不需要reluctant匹配,因为它会自动停止在第一个{

答案 1 :(得分:1)

这个正则表达式怎么样:

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

匹配{}。

但是,如果该过程包含包含大括号的字符串或注释,则它将失败。