Boost.Xpressive で () の中身を取り出す
mark_tag を使用して、マッチした位置の文字列を取得することが出来ます。
[ソース]
#define _SCL_SECURE_NO_WARNINGS #include <iostream> #include <boost/xpressive/xpressive.hpp> int main(){ namespace x = boost::xpressive; x::mark_tag name(1); x::sregex regex = "(" >> (name = -*x::_) >> ")"; std::string source = "(homu)"; x::smatch what; if( x::regex_search(source, what, regex) ){ std::cout << what.str() << std::endl; std::cout << what[name].str() << std::endl; } return 0; }
[出力]
(homu) homu
Boost.Spirit.Qi とはまた違って面白いですね。
[boost]
- ver 1.49.0