Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Функция regex_match(): проверка полного соответствия шаблону
Выполнить проверку полного соответствия строки шаблону регулярного выражения позволяет функция regex_match()
. Функция возвращает значение true
, если строка полностью соответствует шаблону, и значение false
— в противном случае. При использовании функции regex_match()
проверяется полное соответствие с шаблоном, поэтому привязки в началу (символ ^
) и концу (символ $
) строки можно не указывать. Основные прототипы функции regex_match()
(полный список смотрите в документации):
template<typename _Ch_type, class _Rx_traits>
bool regex_match(const _Ch_type *cstr,
const basic_regex<_Ch_type, _Rx_traits> &re,
match_flag_type flags=match_default);
template<typename _Ch_traits, typename _Str_allocator,
typename _Ch_type, typename _Rx_traits>
bool regex_match(
const basic_string<_Ch_type, _Ch_traits, _Str_allocator> &str,
const basic_regex<_Ch_type, _Rx_traits> &re,
match_flag_type flags=match_default);
template<typename _Bi_iter, typename _Ch_type, typename _Rx_traits>
bool regex_match(_Bi_iter first, _Bi_iter last,
const basic_regex<_Ch_type, _Rx_traits> &re,
match_flag_type flags=match_default);
template<typename _Ch_type, typename _Alloc, typename _Rx_traits>
bool regex_match(const _Ch_type *cstr,
match_results<const _Ch_type*, _Alloc> &match,
const basic_regex<_Ch_type, _Rx_traits> &re,
match_flag_type flags=match_default);
template<typename _Ch_traits, typename _Ch_alloc,
typename _Alloc, typename _Ch_type, typename _Rx_traits>
bool regex_match(
const basic_string<_Ch_type, _Ch_traits, _Ch_alloc> &str,
match_results<typename basic_string<_Ch_type,
_Ch_traits, _Ch_alloc>::const_iterator, _Alloc> &match,
const basic_regex<_Ch_type, _Rx_traits> &re,
match_flag_type flags=match_default);
В параметре cstr
указывается C-строка, в которой выполняется поиск, а в параметре str
вместо C-строки можно указать объект класса basic_string
. Задать фрагмент для поиска можно также с помощью итераторов first
и last
. Параметр re
задает шаблон регулярного выражения. Пример проверки:
std::regex rgx("[0-9]+");
if (std::regex_match("123456", rgx))
std::cout << "Строка соответствует шаблону" << std::endl;
else
std::cout << "Не соответствует" << std::endl;
Если указать параметр match
, то станет доступной дополнительная информация о совпадении с шаблоном в виде объекта класса match_results
(см. разд. 10.5). Проверим адрес электронной почты на соответствие шаблону и получим отдельно имя пользователя и название сайта:
std::regex::flag_type flags =
std::regex::icase | std::regex::ECMAScript;
std::regex rgx(
"([a-z0-9_.-]+)@((?:[a-z0-9-]+\\.)+[a-z]{2,6})", flags);
std::string str("user@mail.ru");
std::smatch m;
if (std::regex_match(str, m, rgx)) {
std::cout << "E-mail соответствует шаблону" << std::endl;
std::cout << m.str(1) << std::endl; // user
std::cout << m.str(2) << std::endl; // mail.ru
}
В параметре flags
можно указать следующие флаги или их комбинацию через оператор |
:
std::regex_constants::match_default
std::regex_constants::match_not_bol
std::regex_constants::match_not_eol
std::regex_constants::match_not_bow
std::regex_constants::match_not_eow
std::regex_constants::match_not_null
std::regex_constants::match_any
std::regex_constants::match_continuous
std::regex_constants::match_prev_avail
Пример отмены совпадения с началом и концом слова (отмена класса \b
):
std::regex_constants::match_flag_type flags =
std::regex_constants::match_not_bow |
std::regex_constants::match_not_eow;
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов