我正在尝试构建一个用于检测源代码中线性搜索的正则表达式(类C语法)。
循环声明本身并不是什么大问题,即for,while,do等我可以稍后添加。
我遇到的具体问题是检测{}
块内的语句是否正确。
到目前为止,我有这个用于检测一种循环块。
BOOST_FOREACH\([^\)]*\)\W*{[^}]*}
我如何在if
之间找到{[^}]*}
声明?
感谢您的帮助。
答案 0 :(得分:2)
这是一个开始:
(BOOST_FOREACH\([^\)]*\)\W*\{[^{}]*?(if\(.*?\).*?\{.*?\})[^{}]*?\})
第一个捕获的组将包含BOOST_FOREACH
块,第二个捕获的组将包含if
块。
BOOST_FOREACH()
{
if(hello){
//some code
}
}
BOOST_FOREACH()
{
if(hello)
{
//some code
}
}
if(hello)
{
//some code
}