正则表达式匹配整个字符串

时间:2014-03-16 03:21:15

标签: c++ regex string

我有以下模式:

[ \n\t]*([a-zA-Z][a-zA-Z0-9_]*)[ \n\t]+((char)[ \n\t]*\[[ \n\t]*([0-9]+)[ \t\n]*\]|(char)|(int)|(double)|(bool)|(blob)[ \n\t]*\[[ \n\t]*([0-9]+)[ \t\n]*\])[ \n\t]*

您可以在此处试用:http://regex101.com/r/vA0xG9

在第一个捕获组([a-zA-Z][a-zA-Z0-9_]*)中,我想抓取仅以a-zA-Z开头的单词。

以下两个字符串相同:

cpf char[12]

9cpf char[12]

忽略9数字并与第一个字符串匹配。

我尝试使用此捕获组:(ˆ[a-zA-Z][a-zA-Z0-9_]*$),但它不起作用。

我正在使用lib regex.h

我该怎么办?

感谢。

1 个答案:

答案 0 :(得分:2)

将^放在整个事物的开头,将$放在最后

^[ \n\t]*([a-zA-Z][a-zA-Z0-9_]*)[ \n\t]+((char)[ \n\t]*\[[ \n\t]*([0-9]+)[ \t\n]*\]|(char)|(int)|(double)|(bool)|(blob)[ \n\t]*\[[ \n\t]*([0-9]+)[ \t\n]*\])[ \n\t]*$

如果你想匹配空格,我还建议使用\ s代替[\ n \ t]。

相关问题