C++:
正規表現の使用
使い方:
C++11では標準ライブラリ<regex>
にて正規表現のサポートが導入され、文字列検索や操作のための堅牢なフレームワークが提供されました。以下は、文字列内でパターンを検索するための正規表現の基本例です:
#include <iostream>
#include <regex>
int main() {
std::string target = "Hello, my email is [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 << "Email found!" << std::endl;
} else {
std::cout << "No email found." << std::endl;
}
return 0;
}
サンプル出力
Email found!
文字列内のパターンを置き換えるなど、より複雑な操作においても、C++の正規表現は非常に便利です:
#include <iostream>
#include <regex>
int main() {
std::string text = "The rain in Spain falls mainly in the plain.";
std::regex vowel_regex("([aeiou])");
std::string replaced_text = std::regex_replace(text, vowel_regex, "*");
std::cout << replaced_text << std::endl;
return 0;
}
サンプル出力
Th* r**n *n Sp**n f*lls m**nly *n th* pl**n.
標準ライブラリを超えて探求するプログラマーにとって、Boost Regexライブラリ(boost/regex.hpp
)は、特に複雑なパターンや広範なデータ処理において、強化された正規表現機能とパフォーマンスの最適化を提供する人気のサードパーティオプションです:
#include <iostream>
#include <boost/regex.hpp>
int main() {
std::string s = "Boost libraries are fun!";
boost::regex expr("(\\w+)\\s(libraries)"); // "Boost libraries" に一致する
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 are fun!
これらの例は、標準ライブラリを使用してもBoostの強力な正規表現実装によっても、基本的な検索、パターンマッチング、置き換えを行うC++の正規表現を用いた機能の表面をかい摘んでいます。