Класс regex
Класс regex представляет собой регулярное
выражение и является основным инструментом
для работы с регулярными выражениями в C++.
Регулярные выражения позволяют описывать
шаблоны поиска текста и находить
соответствия, извлекать подстроки или
заменять их. В конструктор класса
regex мы передаём строку с шаблоном
регулярного выражения, а во второй
необязательный параметр - флаги синтаксиса.
Синтаксис
regex pattern("шаблон");
regex pattern("шаблон", flags);
Пример
Давайте создадим регулярное выражение для
поиска последовательности цифр и проверим
строку на соответствие с помощью функции
regex_match:
#include <iostream>
#include <regex>
using namespace std;
int main()
{
regex pattern("[0-9]+");
string str = "12345";
if (regex_match(str, pattern)) {
cout << "match" << endl;
} else {
cout << "no match" << endl;
}
return 0;
}
Результат выполнения кода:
"match"
Пример
Давайте выполним поиск подстроки, состоящей
из букв, в строке с помощью функции
regex_search:
#include <iostream>
#include <regex>
using namespace std;
int main()
{
regex pattern("[a-z]+");
string str = "123abcde";
if (regex_search(str, pattern)) {
cout << "found" << endl;
} else {
cout << "not found" << endl;
}
return 0;
}
Результат выполнения кода:
"found"
Пример
Давайте заменим все цифры в строке на символ
'#' с помощью функции
regex_replace:
#include <iostream>
#include <regex>
using namespace std;
int main()
{
regex pattern("[0-9]");
string str = "1a2b3";
string res = regex_replace(str, pattern, "#");
cout << res << endl;
return 0;
}
Результат выполнения кода:
"#a#b#"
Смотрите также
-
функция
regex_match,
которая проверяет соответствие строки шаблону -
функция
regex_search,
которая ищет подстроку по шаблону -
функция
regex_replace,
которая заменяет совпадения по шаблону -
класс
cmatch,
который хранит результаты сопоставления