2011-02-10 20 views
2

期待12とは対照的に、私はブーストXpressiveと周りいじるいて、次のスニペット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の一致です。 sregex::operator>>=は、私が直感的に想定したものとは異なる意味/用途を持っていますか?私はこれが_d >> _dに似てsregexをもたらすと期待していた。

答えて

1

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

rex = rex >> _d; 

ただし、このような正規表現の単数形を構築する正規表現を実行します。