Флаги std::regex в C++
Конструктор std::regex принимает флаги
вторым аргументом: учет регистра и другие
правила поиска. Часто используют std::regex::icase
для сравнения без учета регистра:
std::regex re(R"(hello)", std::regex::icase);
bool ok = std::regex_search("HELLO", re);
std::cout << ok << "\n";
Отдельного многострочного флага у std::regex
нет: ^ и $ привязаны к началу и концу
всей строки. Чтобы точка захватывала перевод
строки, в шаблоне используют [\s\S].
Несколько флагов объединяют через |:
std::regex re(R"(^line)", std::regex::icase);
std::string txt = "First\nLINE two";
std::smatch m;
std::regex_search(txt, m, re);
std::cout << m.str() << "\n";
Дана строка:
std::string txt = "Garden GARDEN garden";
Проверьте, встречается ли слово "garden"
без учета регистра, и выведите результат
в консоль.