ホームページ > バックエンド開発 > C++ > C# 正規表現の `matches[0].Value` と `matches[0].Groups[1].Value` の違いは何ですか?

C# 正規表現の `matches[0].Value` と `matches[0].Groups[1].Value` の違いは何ですか?

DDD
リリース: 2024-11-03 04:15:03
オリジナル
290 人が閲覧しました

What's the Difference Between `matches[0].Value` and `matches[0].Groups[1].Value` in C# Regular Expressions?

C の正規表現グループを理解する

はじめに:
正規表現は、データ抽出やデータ抽出などのさまざまなプログラミング アプリケーションで重要な役割を果たします。テキスト操作。正規表現グループの利用方法を理解することは、C# で正規表現グループの可能性を最大限に活用するために不可欠です。

問題の理解:
開発者は、正規表現のマッチングを実行するコード ブロックを継承し、当惑しています。正規表現パターンに対して取得された結果による:

var pattern = @"\[(.*?)\]";
ログイン後にコピー

ユーザー入力「Josh Smith [jsmith]」の場合、結果は単純そうに見えます:

matches[0].Value == "[jsmith]"
ログイン後にコピー

しかし、開発者は追加の結果に困惑しています:

matches[0].Groups[1].Value == "jsmith"
ログイン後にコピー

質問への答え:

1. 「jsmith」がmatches[0].Groups[1].Valueに一致するのはなぜですか?
正規表現パターンには、(.*?) で表される単一のキャプチャ グループが含まれています。このキャプチャ グループは、左角括弧と右角括弧の間のすべての文字と一致します。この場合、「jsmith」をキャプチャします。

2. match[0].Groups は常にいくつのグループを保存しますか?
Groups コレクションには、通常、一致全体と最後の一致の 2 つのグループが保存されます。ただし、グループの数は、正規表現パターンで指定されたキャプチャ グループに応じて異なります。

追加の説明:

  • match.Groups [0] は、キャプチャの数に関係なく、常に一致全体を表します。 groups.
  • match.Groups[1] は、(.*?) の最初の出現に一致するキャプチャ グループを表します。
  • match.Groups[1] ].Captures は、Capture オブジェクトのコレクションであり、 group.

例:
より複雑なパターンを考えてみましょう:

var pattern = @"\[(.*?)\](.*)";
ログイン後にコピー

入力「ignored [john] John」の場合Johnson":

  • match.Groups[0].Value は "[john] John Johnson" です。
  • match.Groups[1] .Value は"john".
  • match.Groups[2].Value は " John Johnson".

以上がC# 正規表現の `matches[0].Value` と `matches[0].Groups[1].Value` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート