C ++ 11 регулярное выражение :: противоречивое поведение icase

Исходя из 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

6

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]