簡體   English   中英

從boost :: regex獲取子表達式(在匹配之前)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM