试图弄清楚如何使用正则表达式提取4位数组
我正在使用的正则表达式:
regex_time : "(([01][0-9]|2[0-3])[0-5][0-9])";
代码示例:
regex expressionFormat(REGEX_TIME);
boost::match_results<std::string::const_iterator> what;
if (boost::regex_search(input,what,expressionFormat))
我的输入通常是
的形式 "0000 1800 2359"
我想把它们推到一个载体中做一些比较。
用于从一行中以字符串格式解析时间。
答案 0 :(得分:0)
while
需要使用if
循环代替regex_search
:
string input;
boost::regex regex("(([01][0-9]|2[0-3])[0-5][0-9])");
boost smatch;
while (boost::regex_search(input.start(), input.end(), what, regex)) {
// what[0] contains current full match
// what[2] contains the hours
}
请注意,每个循环都会将what
移动到下一个值。请参阅boost doc页面上的示例:http://www.boost.org/doc/libs/1_42_0/libs/regex/doc/html/boost_regex/ref/regex_search.html
what
中索引的值由表达式中的捕获组确定。如果您想创建另一个组来匹配分钟,只需创建一个新组:
"(([01][0-9]|2[0-3])([0-5][0-9]))"
要确定what
中的组索引,请计算左括号的数量。