std::regex
Стандартная библиотека C++ поддерживает регулярные выражения.
Файл заголовков: #include <regex>
Для начала опишем несколько переменных:
- Проверяемая строка:
std::string original;
- Результат функции:
std::cmatch result;
- Регулярное выражение:
std::regex regular;
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::regex_search
Поиск в строке всех подстрок, которые подходять под регулярное выражение:
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";
}