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

Why regex_match do not match my regex?

本文关键字:我的 正则表达式 不匹配 match regex 为什么      更新时间:2023-10-16

我必须编写一个C++正则表达式,但由于我是 C++ 新手,所以我无法在regex_match上获得正确的结果。用于测试的字符串为:D10A7;比方说unsigned_char[] stringToBeTested="D10A7";我所要做的就是在regex_match之后,我将在两个不同的短变量中提取 10 和 7 以供应用程序使用。"D"之后的数字将始终为两位数,"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
}

如何为这种情况生成提升::正则表达式,请详细解释答案。

regex_match需要完整的字符串匹配。您需要提供一种模式来执行此操作。

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

这里

  • D - 比赛D
  • ([0-9]{2}) - 捕获到组 1 中的两位数字
  • A - 比赛A
  • ([0-9]) - 将一位数字捕获到组中 2。

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