Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用于检测线性搜索的正则表达式_Regex_Perl - Fatal编程技术网

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

Regex 用于检测线性搜索的正则表达式,regex,perl,Regex,Perl,我正试图构建一个正则表达式来检测源代码中的线性搜索(类似C的语法) 循环声明本身并不是什么大问题,例如for、while、do等。我可以稍后添加它们 我遇到的具体问题是检测{}块中的if语句 到目前为止,我用它来检测一种循环块 BOOST_FOREACH\([^\)]*\)\W*{[^}]*} 如何在{[^}]*}之间查找if语句 谢谢您的帮助。这里是一个开始: (BOOST\u-FOREACH\([^\)]*\\W*{[^{}]*?(if\(.*}).*{.*})[^{}]*?\}) 第一个

我正试图构建一个正则表达式来检测源代码中的线性搜索(类似C的语法)

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

我遇到的具体问题是检测
{}
块中的if语句

到目前为止,我用它来检测一种循环块

BOOST_FOREACH\([^\)]*\)\W*{[^}]*}
如何在
{[^}]*}
之间查找
if
语句

谢谢您的帮助。

这里是一个开始:

(BOOST\u-FOREACH\([^\)]*\\W*{[^{}]*?(if\(.*}).*{.*})[^{}]*?\})

第一个捕获的组将包含
BOOST\u FOREACH
块,第二个捕获的组将包含
if

样本串 比赛1 比赛2
如果您可以在多个操作中执行此操作,那么可能值得检查触发器操作符
,因为您可以使用它来选择支架之间的零件,然后对其进行操作。第二件要考虑的事情是,我认为c是一种类型1的形式语法,因此可能不太适合用正则表达式进行解析,您是否想过使用解析器?谢谢您的建议,但我对自己的语法或编写编译器插件并不感兴趣。我只想要一个快速而肮脏的脚本。使用
*?
关闭贪婪匹配是个好主意。这将有助于解决我的问题谢谢。
BOOST_FOREACH()
{
if(hello){
    //some code
}
}
BOOST_FOREACH()
{
if(hello)
{
    //some code
}
}
if(hello)
{
    //some code
}