C での正規表現を使用したテキストの解析
正規表現は、テキスト パターンの照合と検索を行うための強力かつ柔軟なツールです。 C では、正規表現ライブラリを使用してテキストを解析できます。
C の正規表現ライブラリには、std::regex と Boost.Regex という 2 つの主な選択肢があります。どちらのライブラリも同様のインターフェイスと機能を提供します。ただし、実装方法が異なるため、場合によってはパフォーマンスに違いが生じる可能性があります。一般に、Boost.Regex はより高速で正確なオプションであると考えられていますが、Boost ライブラリの使用も必要です。
この記事では、std::regex ライブラリを使用して C でテキストを解析する方法を紹介します。さまざまな正規表現構文を使用してテキストを照合および抽出する方法をいくつかの例を通して示します。
例 1: 基本テキストの一致
この例では、「hello」を含む文字列と一致します。
#include <iostream> #include <regex> int main() { std::string text = "hello world!"; std::regex pattern("hello"); if (std::regex_search(text, pattern)) { std::cout << "Match found!" << std::endl; } else { std::cout << "Match not found." << std::endl; } return 0; }
この単純なプログラムは、std::regex_search() 関数を使用して、テキスト内に「hello」文字列が存在するかどうかを検索します。一致が見つかった場合、プログラムは「一致が見つかりました!」を出力し、そうでない場合は「一致が見つかりません」を出力します。 std::string クラスと std::regex クラスを使用し、正規表現を文字列として regex オブジェクトに渡したことに注意してください。
例 2: メタキャラクターの使用
正規表現内のメタキャラクターは、特別な意味を持つ文字を指します。最も一般的に使用されるメタ文字とその意味の一部を次に示します:
#include <iostream> #include <regex> int main() { std::string text1 = "hello world!"; std::string text2 = "world hello!"; std::regex pattern("^hello"); if (std::regex_search(text1, pattern)) { std::cout << "Match found in text1!" << std::endl; } if (std::regex_search(text2, pattern)) { std::cout << "Match found in text2!" << std::endl; } return 0; }
#include <iostream> #include <regex> int main() { std::string text1 = "1234"; std::string text2 = "a1234"; std::regex pattern("\d+"); if (std::regex_search(text1, pattern)) { std::cout << "Match found in text1!" << std::endl; } if (std::regex_search(text2, pattern)) { std::cout << "Match found in text2!" << std::endl; } return 0; }
#include <iostream> #include <regex> int main() { std::string text1 = "hello"; std::string text2 = "world"; std::string text3 = "hello world!"; std::regex pattern("(hello|world)"); if (std::regex_search(text1, pattern)) { std::cout << "Match found in text1!" << std::endl; } if (std::regex_search(text2, pattern)) { std::cout << "Match found in text2!" << std::endl; } if (std::regex_search(text3, pattern)) { std::cout << "Match found in text3!" << std::endl; } return 0; }
以上がC++ での正規表現を使用したテキストの解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。