Класс C++ regex не соответствует
Исходя из того, что я исследовал, выражение "[:alpha:]" будет соответствовать любому буквенному символу, но выражение соответствует только символу в нижнем регистре, а не в верхнем. Я не уверен, что с ним не так.
std::regex e ("[:alpha:]");
if(std::regex_match("A",e))
std::cout<<"hi";
else
std::cout<<"no";
2 ответа
Решение
Изменить это:
std::regex e ("[:alpha:]");
чтобы:
std::regex e ("[[:alpha:]]");
Как сказал Адриан: Обратите внимание, что скобки в именах классов являются дополнительными к тем, которые открывают и закрывают определение класса. Например: [[:alpha:]]
это класс символов, который соответствует любому буквенному символу. Читайте больше в ссылке.
Вы должны использовать [[:alpha:]]
смотреть онлайн пример
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main() {
std::regex e ("[[:alpha:]]");
if(std::regex_match("A",e))
std::cout<<"hi";
else
std::cout<<"no";
return 0;
}