正则表达式忽略注释行C ++

时间:2014-10-28 13:29:11

标签: c++ regex

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

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

哪个有效,但也找到了注释掉的代码 // a = 100;我不希望它这样做。我试过了

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

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

编辑:

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:-1)

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

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

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