0

我正在使用以下正则表达式来匹配 C 整数声明而无需初始化。整数可能是无符号的:

^(unsigned[[:space:]]+|^$)int[[:space:]]+[a-zA-Z0-9_]+;$

第一部分匹配unsigned后跟多个空格,或者什么都不匹配。第二部分匹配int后跟空格、变量名和分号。

不幸的是,这似乎与其中没有的任何整数声明都不匹配unsigned。我究竟做错了什么?模式中是否^$符合(...|...)我的预期(匹配空字符串)?谷歌和我的正则表达式手册没有帮助。

4

1 回答 1

2

尝试这个:

^[[:space:]]*(unsigned[[:space:]]+)?int[[:space:]]+[a-zA-Z0-9_]+;[[:space:]]*$

要使一个组成为可选的,放在?它后面。^$不匹配中间的空字符串,它匹配一个完全空的字符串——^匹配字符串的开头,并$匹配字符串的结尾。

于 2013-05-18T16:25:01.863 回答