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

标签 c++ regex c++11 gcc 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);
}

使用 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

最佳答案

对于 future 的用户,这被确认为一个错误,并且它(和类似的问题)根据 this 在 8.1 中得到解决。线程。

我怀疑原作者参与了引起对此的关注,但我想也许我们可以关闭它。

关于C++11 regex::icase 不一致行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37757863/

相关文章:

c++ - 使用复合语法解析时的 Boost.spirit 段错误

C++11 非静态成员初始值设定项和已删除的复制构造函数

c++ - 使用 C++11 正则表达式匹配文本范围

c++ - 异常规范是 SFINAE 中直接上下文的一部分吗?

c++ - 为什么这段C++代码没有同步

java - 计算 N 变量多项式字符串

php垂直正则表达式搜索

Javascript 替换正则表达式不起作用

c++ - 传递派生共享指针的 vector ?

c++ - 如何进行GL_LINE_LOOP抗锯齿?