ホームページ バックエンド開発 C++ C++ で正規表現関数を使用するにはどうすればよいですか?

C++ で正規表現関数を使用するにはどうすればよいですか?

Nov 18, 2023 am 11:41 AM
C++の正規表現 通常の C++ を使用する C++の通常の関数

C++ で正規表現関数を使用するにはどうすればよいですか?

C で正規表現関数を使用するにはどうすればよいですか?

正規表現は、テキスト内のパターンの一致、検索、置換に使用できる強力なテキスト処理ツールです。 C では、正規表現関数ライブラリを使用してテキストを処理できます。この記事では、C で正規表現関数を使用する方法について説明します。

まず、C 標準ライブラリから正規表現ヘッダー ファイルをインクルードする必要があります:

#include <regex>
ログイン後にコピー

次に、std::regex を使用して正規表現オブジェクトを宣言し、一致するパターンを渡すことができます。それを与える。たとえば、複数の文字と数字で構成される文字列を一致させたい場合は、次のコードを使用できます。

std::regex pattern("[a-zA-Z0-9]+");
ログイン後にコピー

正規表現を使用する場合、いくつかのフラグを指定して一致動作を変更することもできます。共通フラグは次のとおりです:

  • std::regex_constants::ECMAScript: ECMAScript スタイルの正規表現構文を使用します;
  • std::regex_constants::grep: grep スタイルの正規表現を使用します。構文;
  • std::regex_constants::extended: POSIX 拡張正規表現構文を使用します;
  • std::regex_constants::icase: 大文字と小文字を無視します;
  • std::regex_constants ::nosubs: 一致する結果を返さない部分式。

実際の状況に応じて、適切なロゴを選択できます。

正規表現マッチングを実行する前に、マッチング結果を保存する std::smatch オブジェクトを定義する必要があります。 std::smatch は、複数の一致結果を保存できる一致結果のコンテナーです。例:

std::smatch matches;
ログイン後にコピー

次に、std::regex_match 関数を使用して、文字列が指定された正規表現に一致するかどうかを確認します。この関数のプロトタイプは次のとおりです。

bool std::regex_match(const std::string& str, std::smatch& match, const std::regex& pattern);
ログイン後にコピー

このうち、str は照合する文字列、match は照合結果を格納するために使用される std::smatch オブジェクト、pattern は照合結果を格納する正規表現オブジェクトです。一致する。この関数は、一致が成功したかどうかを示すブール値を返します。

次のサンプル コードは、std::regex_match 関数を使用して文字列が有効な電子メール アドレスかどうかを確認する方法を示しています。

#include 
#include <regex>

int main()
{
    std::string email = "example@example.com";
    std::regex pattern("\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b");
    std::smatch matches;

    if (std::regex_match(email, matches, pattern))
    {
        std::cout << "Valid email address!" << std::endl;
    }
    else
    {
        std::cout << "Invalid email address!" << std::endl;
    }

    return 0;
}
ログイン後にコピー

std::regex_match の使用に加えて、文字列が有効な電子メール アドレスであるかどうかを確認する関数: 一致に加えて、部分一致にも std::regex_search 関数を使用できます。 std::regex_search 関数のプロトタイプは次のとおりです。

bool std::regex_search(const std::string& str, std::smatch& match, const std::regex& pattern);
ログイン後にコピー

std::regex_search 関数は、指定された正規表現に一致する部分文字列を文字列から検索し、一致した結果を std::smatch に保存します。オブジェクトの真ん中。

次のサンプル コードは、std::regex_search 関数を使用して文字列内のすべての整数を検索する方法を示しています。

#include 
#include <regex>

int main()
{
    std::string text = "abc123def456ghi789";
    std::regex pattern("\d+");
    std::smatch matches;

    while (std::regex_search(text, matches, pattern))
    {
        std::cout << matches.str() << std::endl;
        text = matches.suffix().str();
    }

    return 0;
}
ログイン後にコピー

上記の例では、「123", " が出力されます。 456" と "789"。それぞれ文字列内の 3 つの整数です。

マッチングと検索に加えて、std::regex_replace 関数を使用して、正規表現に一致する文字列の部分を置換することもできます。 std::regex_replace 関数のプロトタイプは次のとおりです。

std::string std::regex_replace(const std::string& str, const std::regex& pattern, const std::string& replacement);
ログイン後にコピー

std::regex_replace 関数は、文字列 str 内の指定された正規表現パターンに一致するすべての部分文字列を検索し、それらを置換文字列で置き換えます。

以下は、std::regex_replace 関数を使用して文字列内のすべてのスペースをアンダースコアに置き換える方法を示すサンプル コードです:

#include 
#include <regex>

int main()
{
    std::string text = "Hello,   World!";
    std::regex pattern("\s+");
    std::string replacement = "_";

    std::string result = std::regex_replace(text, pattern, replacement);
    std::cout << result << std::endl;

    return 0;
}
ログイン後にコピー

上記の例は出力します: "Hello,_World ! 」を使用して、すべてのスペースをアンダースコアに置き換えます。

上記は、C での正規表現関数の使用方法の紹介です。正規表現を使用すると、文字列を効果的に処理し、より柔軟で強力なテキスト処理機能を実現できます。この記事が C の正規表現関数の理解と使用に役立つことを願っています。

以上がC++ で正規表現関数を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? Mar 03, 2025 pm 05:52 PM

この記事では、c関数のリターンタイプ、基本(int、float、charなど)、派生(配列、ポインター、構造体)、およびvoid型を含む詳細を示します。 コンパイラは、関数宣言とreturnステートメントを介して返品タイプを決定し、強制します

C言語関数の定義と呼び出しルールは何ですか、そして C言語関数の定義と呼び出しルールは何ですか、そして Mar 03, 2025 pm 05:53 PM

この記事では、C関数宣言と定義、引数の合格(価値とポインターによる)、返品値、およびメモリリークやタイプの不一致などの一般的な落とし穴について説明します。 モジュール性とProviの宣言の重要性を強調しています

GULC:Cライブラリはゼロから構築されています GULC:Cライブラリはゼロから構築されています Mar 03, 2025 pm 05:46 PM

GULCは、最小限のオーバーヘッド、積極的なインライン、およびコンパイラの最適化を優先する高性能Cライブラリです。 高周波取引や組み込みシステムなどのパフォーマンスクリティカルなアプリケーションに最適な設計では、シンプルさ、モジュールが強調されています

c言語関数形式文字ケース変換手順 c言語関数形式文字ケース変換手順 Mar 03, 2025 pm 05:53 PM

この記事では、文字列ケース変換のC関数について詳しく説明しています。 ctype.hのtoupper()とtolower()を使用し、文字列を介して繰り返し、ヌルターミネーターを処理することを説明しています。 ctype.hを忘れたり、文字列リテラルを変更するなどの一般的な落とし穴は

メモリに保存されているC言語関数の返品値はどこにありますか? メモリに保存されているC言語関数の返品値はどこにありますか? Mar 03, 2025 pm 05:51 PM

この記事では、C関数の戻り値ストレージを調べます。 通常、リターン値は通常、速度のためにレジスタに保存されます。値が大きいと、ポインターをメモリ(スタックまたはヒープ)に使用し、寿命に影響を与え、手動のメモリ管理が必要になります。直接acc

明確な使用法とフレーズ共有 明確な使用法とフレーズ共有 Mar 03, 2025 pm 05:51 PM

この記事では、形容詞の「個別」の多面的な使用法を分析し、その文法機能、一般的なフレーズ(例:「はっきりと異なる」とは異なる」、およびフォーマルと非公式の微妙なアプリケーションを調査します。

C標準テンプレートライブラリ(STL)はどのように機能しますか? C標準テンプレートライブラリ(STL)はどのように機能しますか? Mar 12, 2025 pm 04:50 PM

この記事では、C標準テンプレートライブラリ(STL)について説明し、そのコアコンポーネント(コンテナ、イテレーター、アルゴリズム、およびファンクター)に焦点を当てています。 これらが一般的なプログラミングを有効にし、コード効率を向上させ、読みやすさを改善する方法を詳述しています。

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか? STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか? Mar 12, 2025 pm 04:52 PM

この記事では、cの効率的なSTLアルゴリズムの使用について詳しく説明しています。 データ構造の選択(ベクトル対リスト)、アルゴリズムの複雑さ分析(STD :: STD :: STD :: PARTIAL_SORTなど)、イテレーターの使用、および並列実行を強調しています。 のような一般的な落とし穴

See all articles