Функция regex_match
Функция regex_match проверяет, соответствует ли вся строка заданному регулярному выражению. В отличие от regex_search, которая ищет совпадение в любой части строки, regex_match требует, чтобы совпадение покрывало строку целиком. В первый параметр мы передаем строку для проверки, во второй - объект regex с регулярным выражением, а в третий (необязательный) - объект match_results для сохранения результатов совпадения.
Синтаксис
regex_match(str, regex)
regex_match(str, match_results, regex)
Пример
Давайте проверим, соответствует ли строка "abcde" регулярному выражению, которое допускает только буквы:
#include <iostream>
#include <regex>
using namespace std;
int main()
{
string str = "abcde";
regex re("[a-z]+");
if (regex_match(str, re)) {
cout << "Match" << endl;
} else {
cout << "No match" << endl;
}
return 0;
}
Результат выполнения кода:
"Match"
Пример
Давайте проверим строку, которая содержит цифры, на соответствие выражению только из букв:
#include <iostream>
#include <regex>
using namespace std;
int main()
{
string str = "12345";
regex re("[a-z]+");
if (regex_match(str, re)) {
cout << "Match" << endl;
} else {
cout << "No match" << endl;
}
return 0;
}
Результат выполнения кода:
"No match"
Пример
Давайте получим совпадения по группам, используя объект smatch:
#include <iostream>
#include <regex>
using namespace std;
int main()
{
string str = "abcde";
regex re("([a-z]+)");
smatch matches;
if (regex_match(str, matches, re)) {
cout << matches[0] << endl;
cout << matches[1] << endl;
}
return 0;
}
Результат выполнения кода:
"abcde"
"abcde"
Смотрите также
-
функция
regex_search,
которая ищет совпадение в любой части строки -
функция
regex_replace,
которая заменяет совпадения в строке -
класс
regex,
который хранит регулярное выражение -
класс
cmatch,
который хранит результаты совпадения для строк C-стиля