假设我有这个简单的正则表达式搜索代码:
boost::regex re("(\\d+)(/(\\d))?");
boost::smatch matches;
boost::regex_search(input_str, matches, re);
它会在字符串中搜索123/2
或123
之类的内容。第二个数字和/是可选的
我想知道如果/2
存在与否,如果存在,则在变量之后设置第二个数字,否则将变量设置为-1。
我尝试使用matches.size()
,但无论第二部分是否存在,它总是相同的值。
答案 0 :(得分:1)
这些组有一个布尔matched
成员,您可以查看。
请参阅http://www.boost.org/doc/libs/1_59_0/libs/regex/doc/html/boost_regex/ref/regex_match.html
m[b].matched
- 对于所有整数n< m.size(),如果子表达式n参与匹配,则为true,否则为false。