我有以下模式:
[ \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
。
我该怎么办?
感谢。
答案 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]。