16

C++11 で後読みを使用できないのはなぜですか? 先読みはうまくいきます。

std::regex e("(?<=a)b");

これにより、次の例外がスローされます。

The expression contained mismatched ( and ).

これは例外をスローしません:

std::regex e("a(?=b)");

私は何が欠けていますか?

4

2 に答える 2

21

C++11<regex>は ECMAScript の (ECMA-262) 正規表現構文を使用するため、後読みはありません (C++11 がサポートする他のフレーバーの正規表現にも後読みはありません)。

ユース ケースで後読みの使用が必要な場合は、代わりにBoost.Regexの使用を検討してください。

于 2013-01-26T17:23:56.473 に答える