C++ 从boost::regex(匹配前)获取子表达式
如何在boost::regexC++ 从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
(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>
#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;i std::我的意思是问如何将表达式除以“或”@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';
}
}