Використання регулярних виразів

C++:
Використання регулярних виразів

Як:

C++11 ввів підтримку регулярних виразів у стандартну бібліотеку, <regex>, пропонуючи міцний фреймворк для пошуку та маніпулювання рядками. Ось базовий приклад використання регулярних виразів для пошуку шаблону всередині рядка:

#include <iostream>
#include <regex>

int main() {
    std::string target = "Привіт, моя електронна адреса [email protected]";
    std::regex email_pattern(R"(\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b)");

    if (std::regex_search(target, email_pattern)) {
        std::cout << "Електронну адресу знайдено!" << std::endl;
    } else {
        std::cout << "Електронну адресу не знайдено." << std::endl;
    }

    return 0;
}

Приклад Виводу

Електронну адресу знайдено!

Для більш складних маніпуляцій, таких як заміна шаблонів у рядках, регулярні вирази в C++ можуть бути дуже зручними:

#include <iostream>
#include <regex>

int main() {
    std::string text = "Дощ у Іспанії падає головним чином у рівнині.";
    std::regex vowel_regex("([aeiou])");

    std::string replaced_text = std::regex_replace(text, vowel_regex, "*");
    std::cout << replaced_text << std::endl;

    return 0;
}

Приклад Виводу

Д*щ * Ісп*нії п*д*є г*л*вним чин*м * рівнині.

Для програмістів, які досліджують можливості за межами стандартної бібліотеки, бібліотека Boost Regex (boost/regex.hpp) є популярним варіантом стороннього постачальника, який пропонує розширені можливості регулярних виразів та оптимізацію продуктивності, особливо для складних шаблонів або обширної обробки даних:

#include <iostream>
#include <boost/regex.hpp>

int main() {
    std::string s = "Бібліотеки Boost веселі!";
    boost::regex expr("(\\w+)\\s(biblioteky)"); // Відповідає "Бібліотеки Boost"
    std::string fmt("GNU \\1"); // Замінює на "GNU Boost"

    std::string result = boost::regex_replace(s, expr, fmt);
    std::cout << result << std::endl;

    return 0;
}

Приклад Виводу

GNU Boost веселі!

Ці приклади ледь зачіпають поверхню можливостей C++ з регулярними виразами, ілюструючи базові пошуки, відповідність шаблонам та заміни, як за допомогою стандартної бібліотеки, так і за допомогою потужної реалізації regex від Boost.