提升正则表达式空白捕获

时间:2014-03-12 11:04:32

标签: c++ regex boost

我正在尝试使用boost regex库匹配 XXX> |< |> = |< = | == YYY 形式的字符串。我的代码显示我正在尝试匹配" x.y< 123"。然而,捕获是" x.y"," "," 123",而不是" x.y","<"," 123"。谁知道为什么?

boost::regex e("(.+?) *(>=|<=|==|>|<) *(.+)");
boost::smatch what;
if (boost::regex_match(std::string("x.y<123"), what, e)) {
    for (int i = 0; i < what.size(); ++ i)
        std::cout << std::string(what[i]) << std::endl;
}
else
    std::cout << "Fail matching" << std::endl;

1 个答案:

答案 0 :(得分:3)

匹配结果引用回搜索的字符串。由于你的是暂时的,结果是不确定的。

if (boost::regex_match(std::string("x.y<123"), what, e)) { // bad


std::string s("x.y<123");
if (boost::regex_match(s, what, e)) { // good