为什么 regex_match 不匹配我的正则表达式?
Why regex_match do not match my regex?
我必须编写一个 C++ 正则表达式,但我无法在 regex_match 上获得正确的结果,因为我是 C++ 的新手。
测试字符串为: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
}
如何为这种情况生成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 中。
我必须编写一个 C++ 正则表达式,但我无法在 regex_match 上获得正确的结果,因为我是 C++ 的新手。
测试字符串为: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
}
如何为这种情况生成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 中。