もともとPythonで
#coding:utf-8 from __future__ import print_function import re s = "123hello" # named capture m = re.match(r"(?P<num>\d*)(?P<str>.*)", s) print("num is", m.group("num")) print("str is", m.group("str"))
というように、正規表現を使って中の文字列に対して名前付きキャプチャしようとしただけなんですが、、、
以下C++で上のやつをやった結果です。
#include <iostream> #include <boost/xpressive/xpressive.hpp> #include <boost/xpressive/regex_algorithms.hpp> using namespace boost::xpressive; int main(void) { std::string str("123hello"); sregex rx = sregex::compile("(?P<num>\\d*)(?P<str>.*)"); smatch m; if (regex_match(str.begin(), str.end(), m, rx)){ std::cout << "num is " << m["num"] << std::endl; std::cout << "str is " << m["str"] << std::endl; } }
User's Guide - 1.44.0
これ見れば一発かもしれませんが...