2

Boost Xpressive をいじっていますが、次のスニペットで問題が発生しています

#include <iostream>
#include <string>
#include <boost/xpressive/xpressive.hpp>

using namespace std;
using namespace boost::xpressive;

int main()
{
    string s("123");
    sregex rex = _d;
    rex >>= _d;

    smatch what;

    regex_search(s, what, rex);

    cout << "Match: " << what[0] << endl;

    return 0;
 }

このプログラムを実行した結果は1、予想される とは対照的に と一致し12ます。は、sregex::operator>>=私が直感的に想定したものとは異なる意味/用途を持っていますか? sregexに似た結果が得られると予想していました_d >> _d

4

1 に答える 1

1

Xpressive は >>= 演算子をサポートしていません。このコードがまったくコンパイルされないという事実は、バグと見なすことができます。試す:

rex = rex >> _d;

ただし、このように断片的な正規表現を構築すると、正規表現のパフォーマンスが低下します。

于 2012-01-26T21:31:03.483 に答える