std :: regex_match с символами é è à - PullRequest
2 голосов
/ 20 апреля 2020

Я хочу, например, рассмотреть "ram", "rém", "rèm" и "ràm" как допустимый вход, поэтому я делаю это:

std::string ss = "rém";
bool valid = std::regex_match(ss, std::regex("r[aéèà]m"));

, но в этом случае 'valid' возвращает false, есть что-то особенное с символами é, è и à? Должен ли я изменить выражение регулярного выражения? Спасибо

1 Ответ

1 голос
/ 21 апреля 2020

Вы можете использовать std::wstring для определения строки, а затем использовать std::wregex для фактического запуска регулярного выражения в строках Unicode:

std::wstring ss = L"rém";
std::wcout << std::regex_match(ss, std::wregex(L"r[aéèà]m"));
// => 1, there is a match
...