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