【发布时间】:2012-12-08 09:54:11
【问题描述】:
我想找到下面的值
PROCEDURE test {
test { }
}
来自:
test {
PROCEDURE test {
test { }
}
}
我当前的正则表达式是:
PROCEDURE.*?{.*?(\}){2}
但它不匹配。有谁知道我该如何做到这一点?
【问题讨论】:
我想找到下面的值
PROCEDURE test {
test { }
}
来自:
test {
PROCEDURE test {
test { }
}
}
我当前的正则表达式是:
PROCEDURE.*?{.*?(\}){2}
但它不匹配。有谁知道我该如何做到这一点?
【问题讨论】:
这个正则表达式怎么样:
PROCEDURE\s+\w+\s*\{(?:.*?\{.*?\})*.*?\}
它匹配成对的 {}。
但是,如果该过程包含包含大括号的字符串或 cmets,它将失败。
【讨论】:
您需要在first { 和last } 之间匹配成对的{ 和}。
你可以试试这个正则表达式:-
PROCEDURE[^{]*[{](?:[^{]*[{][^}]*[}])*[^}]*[}]
我在字符类中包含了大括号,这样你就不需要转义它们了,还有[^{]*,你不需要reluctant匹配,因为它会在第一个{处自动停止.
【讨论】: