如何使用boost C ++解析8位十六进制数字和字符串?

时间:2014-04-28 17:15:51

标签: c++ regex boost boost-regex

我刚开始使用boost C ++库进行一些解析器工作。我想对以下内容使用一些帮助:

  1. 匹配8位十六进制数。我试过:char_("0-9a-fA-F")只匹配一个十六进制数字。我也尝试过使用:*char_("0-9a-fA-F"),但它也无效

  2. 匹配任何带下划线字符的字符串?例如,aBCd_Efgh

2 个答案:

答案 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),则:

  1. 您可以使用括号({min,max})指定量词,因此a{3,10}将匹配3到10个a个字符。您可以将其应用于某个群组,例如[0-9a-fA-F]{1,2}
  2. 组表达式可以正常运行:[0-9a-zA-Z_]+
  3. 如果您使用的是POSIX,则区别在于:

    1. 您需要转义括号\{min,max\}
    2. 没有