'\n'などを含む文字列のパターンマッチ
C++標準の正規表現ライブラリにおいて、'.'は'\n'や'\t'などにマッチしません。
しかしBoost.Regexはデフォルトでは'.'にマッチするようになっています。
#include <iostream> #include <regex> #include <boost/regex.hpp> int main(){ std::string text = "ABC\nXYZ"; std::smatch std_result; std::regex_search(text, std_result, std::regex("(.*)")); std::cout << "標準:\n" << std_result.str(1) << std::endl; boost::smatch boost_result; boost::regex_search(text, boost_result, boost::regex("(.*)")); std::cout << "Boost:\n" << boost_result.str(1) << std::endl; return 0; }
Output:
標準: ABC Boost: ABC XYZ
".*"ではなく"[\\s\\S]*"とすれば、標準ライブラリでもマッチするかとやってみたのですが結果は同じでした。
あれ、それは正しい動作なんでしょうか…。