https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61425

            Bug ID: 61425
           Summary: std::regex ignores backslash when using basic or grep
                    grammars
           Product: gcc
           Version: 4.9.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
                CC: timshen at gcc dot gnu.org

#include <regex>
#include <iostream>

using namespace std;

int main()
{
  regex_constants::syntax_option_type grammar[] = {
    regex_constants::basic, regex_constants::grep
  };
  for (auto g : grammar)
  {
    regex re("a\\|b", g);
    const char str[] = "a|b";
    cmatch m;
    if (regex_search(str, m, re))
      cout << m.size() << ' ' << m[0] << endl;
  }
}

There should be two matches, "a" and "b", instead there's only one:

1 a|b
1 a|b

The backslash seems to be ignored.

Reply via email to