Флаг regex::icase
Флаг regex::icase относится к пространству имен std::regex_constants
и используется при создании регулярного выражения для того, чтобы
поиск совпадений выполнялся без учета регистра символов. Другими
словами, символы 'a' и 'A' будут считаться одинаковыми.
Флаг передается вторым параметром в конструктор класса regex
или в функции regex_match, regex_search, regex_replace.
Синтаксис
regex::icase
regex_constants::icase
std::regex_constants::icase
Пример
Давайте создадим регулярное выражение с флагом icase
и проверим, найдется ли шаблон "abc" в строке "ABC":
#include <iostream>
#include <regex>
using namespace std;
int main()
{
string str = "ABC";
regex re("abc", regex::icase);
if (regex_search(str, re)) {
cout << "Match found" << endl;
} else {
cout << "No match" << endl;
}
return 0;
}
Результат выполнения кода:
"Match found"
Пример
Теперь сравним поведение с флагом icase и без него:
#include <iostream>
#include <regex>
using namespace std;
int main()
{
string str = "Hello World";
regex re1("hello");
regex re2("hello", regex::icase);
cout << "Without icase: " << regex_search(str, re1) << endl;
cout << "With icase: " << regex_search(str, re2) << endl;
return 0;
}
Результат выполнения кода:
"Without icase: 0"
"With icase: 1"
Пример
Давайте заменим все вхождения слова в разных регистрах на "X"
с помощью regex_replace и флага icase:
#include <iostream>
#include <regex>
using namespace std;
int main()
{
string str = "cat Cat CAT";
regex re("cat", regex::icase);
string res = regex_replace(str, re, "X");
cout << res << endl;
return 0;
}
Результат выполнения кода:
"X X X"
Смотрите также
-
класс
regex,
который представляет регулярное выражение -
флаг
multiline,
который включает многострочный режим поиска -
функция
regex_search,
которая ищет первое совпадение в строке -
функция
regex_replace,
которая заменяет совпадения в строке