Введение в регулярные выражения в C++
Регулярное выражение - это текстовый
шаблон для поиска, проверки и замены
фрагментов строки. В C++ с шаблонами
работает тип std::regex из заголовка #include <regex>: объект шаблона создают из строки с образцом.
Шаблон состоит из обычных символов, которые совпадают сами с собой, и специальных символов - коротких команд вроде точки или звездочки. Специальные символы задают классы символов, повторения и границы текста.
Замену по шаблону выполняет функция std::regex_replace: передают исходную строку, объект std::regex и строку, на которую нужно заменить каждое совпадение. Простейший
пример выглядит так:
std::regex re(R"(a)");
std::string res = std::regex_replace("bab", re, "!");
std::cout << res << "\n";
Результат выполнения кода:
b!b
Буквы и цифры в шаблоне обозначают те же
символы в тексте. Заменим цифру 2
на "!":
std::regex re(R"(2)");
std::string res = std::regex_replace("12abc3", re, "!");
std::cout << res << "\n";
Точка в шаблоне - специальный символ: она
обозначает любой один символ. Найдем
фрагмент по шаблону буква "x",
любой символ, буква "x" и заменим
его на "!":
std::regex re(R"(x.x)");
std::string res = std::regex_replace("xax eee", re, "!");
std::cout << res << "\n";
Дана строка:
std::string txt = "ahb acb aeb aeeb adcb axeb"
Напишите регулярку, которая найдет строки
"ahb", "acb", "aeb"
по шаблону: буква "a", любой
символ, буква "b".
Дана строка:
std::string txt = "aba aca aea abba adca abea"
Напишите регулярку, которая найдет строки
"abba", "adca", "abea"
по шаблону: буква "a", 2
любых символа, буква "a".
Дана строка:
std::string txt = "aba aca aea abba adca abea"
Напишите регулярку, которая найдет строки
"abba" и "abea", не захватив
"adca".