[英]Get sub expression from boost::regex (before Match)
如何在boost :: regex (basic_regex<char, regex_traits<char> >)
對象中獲取子表達式。 (沒有文本可以比較 - 完成boost::regex_search
)
例子:
表達式: xx。*?yy
預期成果: 1個子表達 -
- xx.*?yy
表達式: xx。 ?yy | XX。 ?Z Z
預期成果: 2個子表達 -
- xx.*?yy
- xx.*?zz
表達式: xx。 ?yy |( xx。?zz | aa。*?bb)
預期成果: 2個子表達 -
- xx.*?yy
- (xx.*?zz|aa.*?bb) -2 sub expression-
- xx.*?zz
- aa.*?bb
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';
}
}
這將提取標記的子表達式(xx.*?zz|aa.*?bb)
,但為了獲得更精確的結果,您需要一個正則表達式解析器: 輕量級正則表達式解析器 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.