Skip to the content.

std::regex


Стандартная библиотека C++ поддерживает регулярные выражения.

Файл заголовков: #include <regex>

Для начала опишем несколько переменных:

std::regex_match

Регулярное выражение должно полностью описывать строку (другими словами строка должна полностью совпадать с регулярным выражением):

std::string original;
std::cmatch result;
std::regex regular = "([a-z ]*)"; // or ([\\w\\s]*)

if (std::regex_match(text.c_str(), result, regular))
{
    std::cout << "true\n";
}

Таким образом можно проверить корректность ввода пользователя, например:

hello world \\ true
Hello_world_2 \\ false

Поиск в строке всех подстрок, которые подходять под регулярное выражение:

std::string original;
std::cmatch result;
std::regex regular = "([0-9]*)";

if (std::regex_search(text.c_str(), result, regular))
{
    std::cout << "true\n";
}
My number is 258 // 258

std::regex_replace

Заменяет все найденные с регулярным выражением совпадения на заданную строку:

std::string original;
std::regex regular = "([0-9]*)";

std::cout << std::regex_replace(text.c_str(), regular, "number");
My number is 258
// My number is number

std::cmatch

std::cmatch содержит в себе строки - результат вызова функции, соответственно вывести результат:

for (int i = 0, size = result.size(); i != size; ++i)
{
    std::cout << result[i] << "\n";
}

regulars