是否有一个库函数可用于获取第一个正则表达式匹配的长度(如果没有匹配则返回0)?
所以我需要一些与此类似的功能:
int length_of_match(const std::string& s, const std::string& rx)
{
...
}
这可以通过这种方式轻松使用:
int a = length_of_match("number = 10", "^[a-zA-z][a-zA-z0-9]*");
int b = length_of_match(" = 10", "^[a-zA-z][a-zA-z0-9]*");
之后a == 6
和b == 0
修改
感谢您的回复,这对我帮助很大。我的问题的解决方案是:
int length_of_match(const std::string& s, const std::string& rx)
{
boost::regex expr(rx);
boost::match_results<std::string::const_iterator> what;
if (!regex_search(s.begin(), s.end(), what, expr)) return 0;
return what.length();
}
Boost效果很好。我也尝试过STL正则表达式,但是我发现STL正则表达式功能对于mingw GCC 4.7.1来说是错误的: