perlで次のようなコードを書きました。
$s = '1102785302.dat<>ダイオキシンが原因 ウクライナ野党候補の急病 (120)';
$s =~ m/^(\d+)\.dat.*\((\d+)\)$/;
print $1,"\t",$2,"\n";
出力結果は、
1102785302 120
で、期待どおりのものでした。

これをC++のboost::regexで実行しようとして、次のようなコードを書きました。
string str = "1102785302.dat<>ダイオキシンが原因 ウクライナ野党候補の急病 (120)";
boost::smatch m;
boost::regex r("^(\d+)\.dat.*\((\d+)\)$");
boost::regex_search(str, m, r);
cout << m.str(1) << "\t" << m.str(2) << endl;

ところが、出力は期待のものが得られませんでした。
これはboostの正規表現はperlのものと違うということでしょうか?