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.