用于检测线性搜索的正则表达式

时间:2014-05-19 11:22:39

标签: regex perl

我正在尝试构建一个用于检测源代码中线性搜索的正则表达式(类C语法)。

循环声明本身并不是什么大问题,即for,while,do等我可以稍后添加。

我遇到的具体问题是检测{}块内的语句是否正确。

到目前为止,我有这个用于检测一种循环块。

BOOST_FOREACH\([^\)]*\)\W*{[^}]*}

我如何在if之间找到{[^}]*}声明?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

这是一个开始:

(BOOST_FOREACH\([^\)]*\)\W*\{[^{}]*?(if\(.*?\).*?\{.*?\})[^{}]*?\})

第一个捕获的组将包含BOOST_FOREACH块,第二个捕获的组将包含if块。

DEMO

示例字符串

BOOST_FOREACH()
{
if(hello){
    //some code
}
}

匹配1

BOOST_FOREACH()
{
if(hello)
{
    //some code
}
}

匹配2

if(hello)
{
    //some code
}