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