我必须编写一个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,请详细解释答案。
答案 0 :(得分:3)
regex_match
需要完整的字符串匹配。你需要提供一个可以做到这一点的模式。
boost::regex re("D([0-9]{2})A([0-9])");
在这里,
D
- 匹配D
([0-9]{2})
- 捕获第1组两位数字A
- 匹配A
([0-9])
- 将第2组捕获到一个数字。