我正在使用下面的正则表达式匹配C整数声明没有初始化。整数可能是无符号:为什么此正则表达式不适用于匹配C整数声明?
^(unsigned[[:space:]]+|^$)int[[:space:]]+[a-zA-Z0-9_]+;$
第一部分匹配unsigned
后跟一个数量的空格,或没有。第二部分匹配int
后跟空格,加上一个变量名和一个分号。
不幸的是,这似乎不匹配不具有它unsigned
任何整数声明。我究竟做错了什么? ^$
(...|...)
模式是否符合我的预期(匹配空字符串)?谷歌和我的正则表达式手册没有帮助。
'^ $'匹配整行空行,因为'$'匹配行的末尾。如果你想使'unsigned'可选,把'?'放在那个组之后。 – Barmar
但是,如果我使用'(unsigned)?',它显然也会与'garbage'匹配...... – user54609
如果您将它固定在行首,则不行。 – Barmar