https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71500
Bug ID: 71500
Summary: regex::icase only works on first character in a range
Product: gcc
Version: 5.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: glexey at gmail dot com
Target Milestone: ---
The code below should match regex in all 4 cases:
#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("[A-F]+", regex::icase);
check("aaa", re1);
check("AAA", re1);
check("fff", re1);
check("FFF", re1);
}
Instead:
$ g++ -std=c++11 test.cc -o test && ./test
aaa : Match
AAA : Match
fff : Nope
FFF : Match
$ g++ -v
Reading specs from /disk1/pkgs/gcc/5.2/lib64/gcc/x86_64-suse-linux/5.2.0/specs
COLLECT_GCC=/usr/pkgs/gcc/5.2/.bin/g++
COLLECT_LTO_WRAPPER=/disk1/pkgs/gcc/5.2/libexec/gcc/x86_64-suse-linux/5.2.0/lto-wrapper
Target: x86_64-suse-linux
Configured with: ./configure --prefix=/usr/pkgs/gcc/5.2
--libdir=/usr/pkgs/gcc/5.2/lib64 --libexecdir=/usr/pkgs/gcc/5.2/libexec
--bindir=/usr/pkgs/gcc/5.2/bin --with-ppl=/usr/pkgs/gcc/5.2
--enable-cloog-backend=ppl --with-cloog=/usr/pkgs/gcc/5.2
--with-libelf=/usr/pkgs/gcc/5.2 --with-mpfr=/usr/pkgs/gcc/5.2
--with-gmp=/usr/pkgs/gcc/5.2 --with-mpc=/usr/pkgs/gcc/5.2
--disable-gnu-unique-object --enable-lto
--enable-languages=c,c++,objc,fortran,java --build=x86_64-suse-linux
--host=x86_64-suse-linux --target=x86_64-suse-linux
Thread model: posix
gcc version 5.2.0 (GCC)