我在1000行代码中寻找所有代码分支点。也就是说,我想找到{if,elseif,for,switch,while等}的每一次出现,它们在评论“%”后面不。
如何?
实施例
在if(x > 50)
匹配,如果。
func(x) % What do I tell my boss if this doesn't work?
中的与匹配。
更新
Justin'jjnguy'Nelson带来了一个使用基本正则表达式的答案。 (感谢贾斯汀)但是我已经预料到需要正则表达式lookaround的解决方案。有没有人有一个使用环顾的解决方案?我在尝试工作时遇到了麻烦。
答案 0 :(得分:3)
如果您不假设多行注释,并且在字符串文字中没有注释字符,那么这可以非常简单:
/^[^%]*(if|elseif|for|switch|while|etc)/
只要在他们之前没有%
,这就会匹配给定的关键字。
答案 1 :(得分:0)
这是我的看法,可能是错的。
您必须使用特定于该语言的解析器
另一方面,评论通常遵循严格的行为顺序,
这与转义/非转义,到行尾,行跨越等有关。
这些规则通常可以使用正则表达式,因为
评论本身并不遵循语言规则。虽然它不容易,但它的可行性
在他们被剥离后,您可以申请另一个正则表达式,以便找到左
关键字。