Подскажите, почему код:
regex wrong("[a-z]{4,}");
string s="hYhghgZ";
if(regex_match(s, wrong)) cout << "wrong " << endl;
else cout << "ok";
выдает ok, хотя в строке hYhghgZ есть подходящий фрагмент "hghg"?
Это все потому, что regex_match() - ищет полное совпадение строк. Он не ищет шаблон в части строки. Для поиска подстроки используйте regex_search().
На cppreference честно пишут:
Note that regex_match will only successfully match a regular expression to an entire character sequence, whereas std::regex_search will successfully match subsequences.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей