繁体   English   中英

为什么regex_match与我的正则表达式不匹配?

[英]Why regex_match do not match my regex?

我必须写一个C ++正则表达式,但我无法在regex_match上得到正确的结果,因为我是c ++的新手。 用于测试的字符串是:D10A7; 让我们说unsigned_char[] stringToBeTested="D10A7"; 我要做的是在regex_match之后,我将在两个不同的短变量中提取10和7以供应用程序使用。 'A'后的数字始终为两位数字,而'A'后的数字始终为一位数。 我尝试这样做是:

boost::regex re("D([0-9])(/([0-9]))?");
boost::cmatch mr;
if ( boost::regex_match(stringToBeTested, mr, re ) )
{       
    number = atoi(mr.str(1).c_str()); //Must be 10
    axis = atoi(mr.str(2).c_str()); //Must be 7
}

如何为这种情况生成boost :: regex re,请详细解释答案。

regex_match需要完整的字符串匹配。 你需要提供一个可以做到这一点的模式。

boost::regex re("D([0-9]{2})A([0-9])");

这里,

  • D - 匹配D
  • ([0-9]{2}) - 捕获组1的两位数
  • A - 匹配A
  • ([0-9]) - 将第2个数字捕获到第2组。

请参阅上述正则表达式在线演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM