C++ 11 regex :: icase不一致行为

gle*_*xey 6 c++ regex gcc c++11 gcc5.2

来自类似perl的正则表达式,我期望下面的代码在所有8种情况下匹配正则表达式.但事实并非如此.我错过了什么?

#include <iostream>
#include <regex>
#include <string>

using namespace std;

void check(const string& s, regex re) {
    cout << s << " : " << (regex_match(s, re) ? "Match" : "Nope") << endl;
}

int main() {
    regex re1 = regex("[A-F]+", regex::icase);
    check("aaa", re1);
    check("AAA", re1);
    check("fff", re1);
    check("FFF", re1);
    regex re2 = regex("[a-f]+", regex::icase);
    check("aaa", re2);
    check("AAA", re2);
    check("fff", re2);
    check("FFF", re2);
}
Run Code Online (Sandbox Code Playgroud)

使用gcc 5.2运行:

$ g++ -std=c++11 test.cc -o test && ./test
aaa : Match
AAA : Match
fff : Nope
FFF : Match
aaa : Match
AAA : Match
fff : Match
FFF : Nope
Run Code Online (Sandbox Code Playgroud)

Har*_* Mc 3

对于未来的用户,这已被确认为一个错误,并且根据线程,它(以及类似的问题)从 8.1 开始已得到解决。

我怀疑原作者参与了引起人们对此问题的关注,但我想也许我们可以解决这个问题。