C 開発では、正規表現は非常に便利なツールです。正規表現を使用すると、文字列の照合や検索などの操作を簡単に実行できます。この記事では、読者が開発上の問題を解決するために正規表現をより適切に適用できるように、C の正規表現とその応用テクニックを紹介します。
1. 正規表現の概要
正規表現は文字セットで構成されるパターンであり、文字列を特定のルールと一致させるために使用されます。正規表現は通常、メタキャラクター、修飾子、文字で構成されます。このうち、メタキャラクターは特別な意味を持ち、文字の種類を表すために使用され、修飾子は文字が繰り返し出現する回数を指定するために使用されます。文字は、通常の文字または特殊文字を表すことができます。
C では、
. 任意の文字と一致します。
# 文字列の先頭と一致します。
$ 文字列の末尾と一致します。
2. 正規表現の適用
正規表現は、次のような C の多くのシナリオに適用できます:
正規表現を使用すると、特定の正規文字列と簡単に一致させることができます。たとえば、次のサンプル プログラムはすべての a 文字に一致します。
#include <iostream> #include <regex> using namespace std; int main() { regex reg("a"); string str = "apple banana"; sregex_iterator it(str.begin(), str.end(), reg); sregex_iterator end; while (it != end) { smatch match = *it; cout << match.str() << endl; it++; } return 0; }
正規表現を使用すると、ファイル内のコンテンツを簡単に検索して置換することもできます。弦 。次のサンプル プログラムは、すべての a 文字を b 文字に置き換えます:
#include <iostream> #include <regex> using namespace std; int main() { regex reg("a"); string str = "apple banana"; string newstr = regex_replace(str, reg, "b"); cout << newstr; return 0; }
Web サイト開発では、ユーザーが送信したフォームを検証する必要があることがよくあります。 . 、入力されたデータが正しい形式であることを確認します。正規表現を使用すると、この機能を簡単に実現できます。たとえば、次のサンプル プログラムは、ユーザー入力が電子メール アドレスであるかどうかを判断します。
#include <iostream> #include <regex> using namespace std; bool is_valid_email(string email) { regex reg("\w+@(\w+\.)+[a-zA-Z]+"); return regex_match(email, reg); } int main() { string email1 = "hello@gmail.com"; string email2 = "hello@gmail"; cout << is_valid_email(email1) << endl; cout << is_valid_email(email2) << endl; return 0; }
システムの動作中に、大量のログ情報が生成されます。正規表現を使用すると、これらのログ メッセージを簡単に分析できます。たとえば、次のサンプル プログラムは、エラー文字列を含むすべての行をログに出力します。
#include <iostream> #include <fstream> #include <regex> using namespace std; int main() { ifstream fin("log.txt"); regex reg(".*error.*"); string line; while (getline(fin, line)) { if (regex_match(line, reg)) { cout << line << endl; } } fin.close(); return 0; }
3. ヒント
正規表現を使用する場合は、次の点に注意する必要があります。
以上がC++ の正規表現とその応用スキルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。