为什么这个正则表达式不能匹配C的整数声明?



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

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

第一部分匹配unsigned后面跟着一些空格,或者什么都不匹配。第二部分匹配int,后跟空格,加上变量名和分号。

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

试试这个:

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

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

最新更新