正規表現の使用

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++の正規表現を用いた機能の表面をかい摘んでいます。