我想识别代码行,我的问题在于代码行的开头。当一条指令不在指令的一部分旁边时,我不知道如何使我的正则表达式识别。
我的正则表达式:
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.
答案 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)