正则表达式。指定角色不能存在

时间:2016-10-23 17:26:26

标签: regex

我想识别代码行,我的问题在于代码行的开头。当一条指令不在指令的一部分旁边时,我不知道如何使我的正则表达式识别。

我的正则表达式:

int [A-Za-z_]+ ?= ?\d ?(\+|-) ?\d *;

在这个例子中,正则表达式识别指令但是错误。

asdsaint var = 2+2;

它认识到“int var = 2 + 2;”但是int在“asdsa”旁边然后这不好。

我希望我的正则表达式只能在指令如下时识别指令:

(int var = 2+2;) With nothing before the isntruction
(    int var = 2+2;) With n white space before.
(int var = 2+2;int var = 2+2;) With the ";" character before.

2 个答案:

答案 0 :(得分:0)

\b之前添加int前需要字边界,如下所示:

\bint [A-Za-z_]+ ?= ?\d ?(\+|-) ?\d *;

根据所使用的正则表达式风格,您也可以使用负零宽度lookbehind,如下所示:

(?<![A-Za-z_])int [A-Za-z_]+ ?= ?\d ?(\+|-) ?\d *;

另外,为了对空白更加宽容,你可能需要这样的东西:

(?<![A-Za-z_])int\s+[A-Za-z_]+\s*=\s*\d\s*([+-])\s*\d\s*;

答案 1 :(得分:0)

尝试以下正则表达式:

(^|\s+?|;)int var\s?=\s?\d+?\s?[+-]\s?\d+?(?=\s|;|$)

https://regex101.com/r/WitW8W/1