Вы можете использовать встроенные методы std::string
, чтобы проверить, что первая часть строки является литералом "0x" и что остальная часть строки содержит только разрешенные символы.Вот эквивалент регулярного выражения, приведенного в вопросе:
bool is_hex_notation(std::string const& s)
{
return s.compare(0, 2, "0x") == 0
&& s.size() > 2
&& s.find_first_not_of("0123456789abcdefABCDEF", 2) == std::string::npos;
}