C++ 从boost::regex(匹配前)获取子表达式

C++ 从boost::regex(匹配前)获取子表达式,c++,regex,boost,C++,Regex,Boost,如何在boost::regex(basic_regex)对象中获取子表达式。(没有要比较的文本-befroe doneboost::regex_search) 示例: 表达式:xx.*yy 预期结果:1子表达式- 表达式:xx.?yy | xx.?zz 预期结果:2子表达式- 表达式:xx.?yy |(xx.?zz | aa.*bb) 预期结果:2子表达式- boost::regex将允许您提取标记的(即括号中的)子表达式: #include <boost/regex.hpp> #i

如何在boost::regex
(basic_regex)
对象中获取子表达式。(没有要比较的文本-befroe done
boost::regex_search

示例:

表达式:xx.*yy

预期结果:1子表达式-

表达式:xx.?yy | xx.?zz

预期结果:2子表达式-

表达式:xx.?yy |(xx.?zz | aa.*bb)

预期结果:2子表达式-


boost::regex
将允许您提取标记的(即括号中的)子表达式:

#include <boost/regex.hpp>
#include <iostream>

int main() {
  boost::regex r("xx.?yy|(xx.?zz|aa.*?bb)", boost::regex::save_subexpression_location);
  for (unsigned i = 1; i < r.mark_count(); ++i) {
    auto range = r.subexpression(i);
    std::cout << std::string(range.first, std::next(range.second)) << '\n';
  }
}
#包括
#包括
int main(){
boost::regex r(“xx.?yy |(xx.?zz | aa.*?bb)”,boost::regex::save_子表达式_位置);
for(无符号i=1;istd::我的意思是问如何将表达式除以“或”@user1790461是的,您需要一个正则表达式解析器;这不是正则表达式实现所能提供的。
                - xx.*?yy

                - xx.*?zz
                -  xx.*?yy       

                - (xx.*?zz|aa.*?bb) -2 sub expression-
 
                       -  xx.*?zz

                       -  aa.*?bb
#include <boost/regex.hpp>
#include <iostream>

int main() {
  boost::regex r("xx.?yy|(xx.?zz|aa.*?bb)", boost::regex::save_subexpression_location);
  for (unsigned i = 1; i < r.mark_count(); ++i) {
    auto range = r.subexpression(i);
    std::cout << std::string(range.first, std::next(range.second)) << '\n';
  }
}