0
我遇到了一些非常奇怪的行为,使用C++ 11 std :: regex-es。 它重复抛出std :: regex_error异常,即使是捕获组内容的最基本的调整,所以我写了一些测试用例并检查每一个,下面是结果。std ::正则表达式捕获组语法错误
#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);
我理解ECMAScript的语法(默认)不支持[0-9]语法,但扩展语法呢,所以我的问题是:
为什么不4,5,6和7个工作,如果8和9做?
更新#1:
默认的语法,ECMAScript中不支持它(感谢Neil Butterworth),我只得到了我想测试这一想法。
似乎[为我工作](http://rextester.com/ODZ5710) –
你使用什么编译器和版本? – Galik
“我明白ECMAScript语法(默认)不支持[0-9]语法” - 是的,它的确如此。 –