我刚开始使用boost C ++库进行一些解析器工作。我想对以下内容使用一些帮助:
匹配8位十六进制数。我试过:char_("0-9a-fA-F")
只匹配一个十六进制数字。我也尝试过使用:*char_("0-9a-fA-F")
,但它也无效
匹配任何带下划线字符的字符串?例如,aBCd_Efgh
答案 0 :(得分:3)
因为char_
确实来自boost::spirit::qi
,所以你只想使用整数解析器:
这很容易用于解析十六进制:
qi::int_parser<unsigned char, 16, 2, 2> hex_byte;
将连续匹配并解析2个十六进制数字。
答案 1 :(得分:0)
如果您正在使用PCRE,即初始化您的正则表达式,如boost::regex e1(my_expression)
或boost::regex e2(my_expression, boost::regex::perl)
,则:
{min,max}
)指定量词,因此a{3,10}
将匹配3到10个a
个字符。您可以将其应用于某个群组,例如[0-9a-fA-F]{1,2}
[0-9a-zA-Z_]+
如果您使用的是POSIX,则区别在于:
\{min,max\}