私は11 ++ std :: regex-esを使ってかなり奇妙な振る舞いに遭遇しました。 キャプチャグループの内容に最も基本的な調整を加えてstd :: regex_error例外を繰り返しスローしたので、いくつかのテストケースを書き、それぞれを調べました。その結果は以下のとおりです。std :: regexグループ構文のエラーを捕らえる
#include <regex>
std::regex reg;
1 error reg.assign("[0-9]");
2 reg.assign("[0-9]", std::regex_constants::extended);
3 reg.assign("[0-9]*", std::regex_constants::extended);
4 error reg.assign("([0-9])", std::regex_constants::extended);
5 error reg.assign("([0-9]*)", std::regex_constants::extended);
6 error reg.assign("a([0-9])", std::regex_constants::extended);
7 error reg.assign("a([0-9]*)", std::regex_constants::extended);
8 reg.assign("[0-9]+([0-9]*)", std::regex_constants::extended);
9 reg.assign("[a-z]+([0-9]*)", std::regex_constants::extended);
10 reg.assign("a(.*)");
11 reg.assign("a(.*)", std::regex_constants::extended);
は、私が[0-9]構文をサポートしていませんECMAScriptの文法(デフォルト)を理解しますが、拡張された文法はありませんので、私の質問は:
なぜない4、5、6 8と9の場合、7つの仕事がありますか?
更新#1:
デフォルトの文法、ECMAScriptのは、それをサポートしていない(感謝Neil Butterworth)は、私が唯一の私が試したテストからそのアイデアを得ました。
[私のために働く](http://rextester.com/ODZ5710) –
あなたはどのコンパイラとバージョンを使用していますか? – Galik
"ECMAScript文法(デフォルト)は[0-9]構文をサポートしていません" - そうです。 –