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 回答