std::regex на C++ встроенные флаги (?i) в тексте шаблона не поддерживаются. Режим без учета регистра задают вторым аргументом конструктора: std::regex::icase.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpRgSF 42 of 696 menu
◀ ▶

Флаги в строке шаблона в C++

В std::regex встроенные флаги (?i) в тексте шаблона не поддерживаются. Режим без учета регистра задают вторым аргументом конструктора: std::regex::icase. Отдельного многострочного флага нет: ^ и $ привязаны к началу и концу всей строки. Чтобы точка захватывала перевод строки, используют [\s\S].

Без флага шаблон [a-z]+ найдет только строчные буквы:

std::string txt = "aaa bbb CCC DDD"; std::regex re(R"([a-z]+)"); std::string res = std::regex_replace(txt, re, "!"); std::cout << res << "\n";

С флагом std::regex::icase буквы любого регистра попадут под шаблон:

std::string txt = "aaa AAA bbb BBB"; std::regex re(R"([a-z]+)", std::regex::icase); std::string res = std::regex_replace(txt, re, "!"); std::cout << res << "\n";

Точка без специальной конструкции не совпадает с переводом строки. С [\s\S] заменяются все символы:

std::string txt = "aaa\nbbb"; std::regex dot(R"(.)"); std::string without = std::regex_replace(txt, dot, "!"); std::regex any(R"([\s\S])"); std::string withFlag = std::regex_replace(txt, any, "!"); std::cout << without << "\n"; std::cout << withFlag << "\n";

Дана строка:

std::string txt = "Code CODE code";

Замените каждое слово "code" на "*" без учета регистра и выведите строку в консоль.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить