c++ - 如何在 boost::regex 中找到子匹配的字符串位置

标签 c++ boost-regex

boost::regex_search(start, end, what, pattern) 之后,我可以通过调用 what.position() 在搜索字符串中找到完全匹配的起始位置。

如何找到子匹配的位置?

我需要这样的代码:

if(boost::regex_search(start, end, what, pat))
{
    int len = what["namedGroup"].length();
    int pos = what["namedGroup"].position();
}

最佳答案

我找到了解决方案。

boost::match_results 的每个元素,在我的例子中是 std::string::const_iterator 的 boost::match_results,具有属性 first 和 second,它们对应地指向搜索字符串中此子匹配的开始和结束迭代器。因此,您可以使用迭代器或通过 std::distance() 将它们转换为索引

std::string::const_iterator start, end;
boost::match_results<std::string::const_iterator> what;
start = searchString.begin();
end  = searchString.end ();

if(boost::regex_search(start, end, what, pattern))
    {
        std::string::const_iterator beg = what["namedGroup"].first;
        std::string::const_iterator end = what["namedGroup"].second;
        int beginIndex = std::distance(start, beg);
    }

关于c++ - 如何在 boost::regex 中找到子匹配的字符串位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10835217/

相关文章:

c++ - 使用 boost::regex_search 忽略大小写

c++ - boost 正则表达式捕获组

c++ - 检测到堆栈粉碎,中止,OpenGl freeglut

java - ~1s 延迟控制应用程序 : is this suitable for Java?

c++ - 如何在boost中定义正则表达式?

c++ - 如何检查哪个匹配组被用来匹配(boost-regex)

c++ - 由于链接错误,我无法构建 boost_regex 代码

c++ - 当程序退出时,C++库实现如何分配内存但不释放内存?

c++ - g++ 6.3,avx 内在函数的 Kahan 求和使用 volatile 关键字序列化

C++ : getting strange values for my character array when converting to int and adding