首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用boost C++解析8位十六进制数和字符串?

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

Stack Overflow用户
提问于 2014-04-28 17:15:50
回答 2查看 953关注 0票数 2

我刚刚开始使用boost C++库来完成解析器的工作。我想在以下方面提供一些帮助:

  1. 匹配8位十六进制数。我试过:char_("0-9a-fA-F"),它只匹配一个十六进制数字。我也尝试过使用:*char_("0-9a-fA-F"),但它也不起作用
  2. 匹配任何带有下划线字符的字符串?例如,aBCd_Efgh
EN

回答 2

Stack Overflow用户

发布于 2014-04-28 20:32:07

实际上,由于char_来自boost::spirit::qi,所以只需使用整数解析器:

  • 0/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html

这很容易用于解析十六进制:

代码语言:javascript
复制
qi::int_parser<unsigned char, 16, 2, 2> hex_byte;

将连续准确匹配和解析两个十六进制数字。

票数 3
EN

Stack Overflow用户

发布于 2014-04-28 19:32:43

如果您使用的是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_]+

如果您使用的是POSIX,区别是:

  1. 您需要转义括号\{min,max\}
  2. 没什么。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23347233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档