ホームページ バックエンド開発 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言語データ構造:ツリーとグラフのデータ表現と操作 Apr 04, 2025 am 11:18 AM

C言語データ構造:ツリーとグラフのデータ表現は、ノードからなる階層データ構造です。各ノードには、データ要素と子ノードへのポインターが含まれています。バイナリツリーは特別なタイプの木です。各ノードには、最大2つの子ノードがあります。データは、structreenode {intdata; structreenode*left; structreenode*右;}を表します。操作は、ツリートラバーサルツリー(前向き、順序、および後期)を作成します。検索ツリー挿入ノード削除ノードグラフは、要素が頂点であるデータ構造のコレクションであり、近隣を表す右または未照明のデータを持つエッジを介して接続できます。

C言語ファイルの操作問題の背後にある真実 C言語ファイルの操作問題の背後にある真実 Apr 04, 2025 am 11:24 AM

ファイルの操作の問題に関する真実:ファイルの開きが失敗しました:不十分な権限、間違ったパス、およびファイルが占有されます。データの書き込みが失敗しました:バッファーがいっぱいで、ファイルは書き込みできず、ディスクスペースが不十分です。その他のFAQ:遅いファイルトラバーサル、誤ったテキストファイルエンコード、およびバイナリファイルの読み取りエラー。

cでRValue参照を効果的に使用するにはどうすればよいですか? cでRValue参照を効果的に使用するにはどうすればよいですか? Mar 18, 2025 pm 03:29 PM

記事では、移動セマンティクス、完璧な転送、リソース管理のためのcでのr値参照の効果的な使用について説明し、ベストプラクティスとパフォーマンスの改善を強調しています。(159文字)

より表現力のあるデータ操作のために、C 20の範囲を使用するにはどうすればよいですか? より表現力のあるデータ操作のために、C 20の範囲を使用するにはどうすればよいですか? Mar 17, 2025 pm 12:58 PM

C 20の範囲は、表現力、複合性、効率を伴うデータ操作を強化します。複雑な変換を簡素化し、既存のコードベースに統合して、パフォーマンスと保守性を向上させます。

C言語関数の基本的な要件は何ですか C言語関数の基本的な要件は何ですか Apr 03, 2025 pm 10:06 PM

C言語関数は、コードモジュール化とプログラム構築の基礎です。それらは、宣言(関数ヘッダー)と定義(関数体)で構成されています。 C言語は値を使用してパラメーターをデフォルトで渡しますが、外部変数はアドレスパスを使用して変更することもできます。関数は返品値を持つか、または持たない場合があり、返品値のタイプは宣言と一致する必要があります。機能の命名は、ラクダを使用するか、命名法を強調して、明確で理解しやすい必要があります。単一の責任の原則に従い、機能をシンプルに保ち、メンテナビリティと読みやすさを向上させます。

c-subscript 3 subscript 5 c-subscript 3 subscript 5アルゴリズムチュートリアルを計算する方法 c-subscript 3 subscript 5 c-subscript 3 subscript 5アルゴリズムチュートリアルを計算する方法 Apr 03, 2025 pm 10:33 PM

C35の計算は、本質的に組み合わせ数学であり、5つの要素のうち3つから選択された組み合わせの数を表します。計算式はC53 = 5です! /(3! * 2!)。これは、ループで直接計算して効率を向上させ、オーバーフローを避けることができます。さらに、組み合わせの性質を理解し、効率的な計算方法をマスターすることは、確率統計、暗号化、アルゴリズム設計などの分野で多くの問題を解決するために重要です。

パフォーマンスを改善するために、CのMove Semanticsを使用するにはどうすればよいですか? パフォーマンスを改善するために、CのMove Semanticsを使用するにはどうすればよいですか? Mar 18, 2025 pm 03:27 PM

この記事では、不必要なコピーを回避することにより、パフォーマンスを向上させるために、CのMove Semanticsを使用することについて説明します。 STD :: MOVEを使用して、移動コンストラクターと割り当てオペレーターの実装をカバーし、効果的なAPPLの重要なシナリオと落とし穴を識別します

動的ディスパッチはCでどのように機能し、パフォーマンスにどのように影響しますか? 動的ディスパッチはCでどのように機能し、パフォーマンスにどのように影響しますか? Mar 17, 2025 pm 01:08 PM

この記事では、Cでの動的発送、そのパフォーマンスコスト、および最適化戦略について説明します。動的ディスパッチがパフォーマンスに影響を与え、静的ディスパッチと比較するシナリオを強調し、パフォーマンスとパフォーマンスのトレードオフを強調します

See all articles