Учитывая, что этот код работает:
regex r1{ "fish"s };
smatch m1;
if (regex_search("I love fish and chips"s, m1, r1))
cout << m1[0] << endl;
Я считаю, что VS2015 поддерживает регулярные выражения. Однако, инициализация этого объекта регулярного выражения:
regex r{ R"(\d{2,3}(-\d\d) { 2 })" };
бросает std::regex_error
исключение. Что не так с инициализацией?
Итак, да, как уже упоминалось в комментариях:
(\d{2,3}(-\d\d) { 2 })
должно быть
(\d{2,3}(-\d\d){2})
в противном случае {2}
относится к пространству вместо (-\d\d)
и другие странные вещи могут произойти также …
У вас есть опечатка в вашем регулярном выражении. Изменить это:
regex r{ R"(\d{2,3}(-\d\d) { 2 })" };
Для того, чтобы:
regex r{ R"(\d{2,3}(-\d\d){2})" };