Regex忽略注释行C++

Regex to ignore commented lines C++

本文关键字:C++ 注释 Regex      更新时间:2023-10-16

我正在尝试使用regex来查找代码中的所有变量初始化或赋值。目前我有

(w+|w[_])s*=s*(d+.d+|.*)

它可以工作,但也可以找到注释掉的代码// a = 100;,我不想让它这么做。我试过

([^/]w+|w[_])s*=s*(d+.d+|.*)`

我认为应该忽略以/开头的字符串,但这不起作用。

编辑:

例如,我希望它能找到这样的行b = 200;而不是// c = 3;

如果有必要,我会尝试这样做。

^(?:(?!//).)*[a-z][a-z0-9_]*s*=s*[0-9]+;

查看演示:http://regex101.com/r/jE4vM0/3

使用此正则表达式并检查第一个子匹配是否为"//",如果是,则在注释之后。

(//)*s*(w+|w[_])s*=s*(d+.d+|.*)

例如,"var=5;"将获得三个子匹配:空白、var5,而"//var=5;"将获得//var5