ホームページ  >  記事  >  バックエンド開発  >  C# では正規表現グループはどのように機能しますか?

C# では正規表現グループはどのように機能しますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-29 12:28:02296ブラウズ

How do Regular Expression Groups Work in C#?

C# の正規表現グループ

次のコード ブロックでは、指定された正規表現によって角かっこ内の内容が抽出されます。

var pattern = @"\[(.*?)\]";
var matches = Regex.Matches(user, pattern);

入力 user == "Josh Smith [jsmith]":

matches.Count == 1
matches[0].Value == "[jsmith]"

ただし、matches[0].Groups.Count == 2、with:

matches[0].Groups[0].Value == "[jsmith]"
matches[0].Groups[1].Value == "jsmith"

グループ コレクションについて

  • match.Groups[0] には常に match.Value.
  • match.Groups[1] と同一の一致全体が含まれます。 ] は正規表現の最初のグループをキャプチャします。

この場合:

  • パターンは @"[(.*?)]" として定義されます。ここで (. *?) はキャプチャ グループです。
  • 正規表現は、括弧で囲まれた文字列全体と括弧内の内容に一致します。

したがって、match.Groups[1]。値は、括弧内の内容「jsmith」を取得します。

一致するグループの数

一致するグループの数は、次のルールによって制御されます。

  • すべての一致にはインデックス 0 の 1 つのグループがあり、これは常に一致全体です。
  • 追加のグループの数は、正規表現で定義されたキャプチャ グループによって異なります。
  • キャプチャ グループが定義されていない場合、一致にはグループが 1 つだけ含まれます。

提供された例では、パターンに 1 つのキャプチャ グループが含まれているため、match.Groups.Count は常に 2 になります。複数のキャプチャ グループを含むより複雑な正規表現では、より多くのグループが生成されます。

追加の例

次のパターンを考慮して一致させます:

var pattern = @"\[(.*?)\](.*)";
var match = Regex.Match("ignored [john] John Johnson", pattern);
  • match.Value は "[john] John Johnson" です。
  • match.Groups[0] は "[john] John Johnson" です。
  • match.Groups[1] ] は [john].
  • match.Groups[2] は John Johnson.

より複雑なパターン:

var pattern = @"(\[.*?\])+";
var match = Regex.Match("[john][johnny]", pattern);
  • match .Value は "[john][johnny]" です。
  • match.Groups[0] は "[john][johnny]" です。
  • match.Groups[1] は [john] [johnny].
  • match.Groups[1].Captures[0] は [john].
  • match.Groups[1].Captures[1] は [johnny].

C# で正規表現グループの力を活用するには、これらの概念を理解することが重要です。

以上がC# では正規表現グループはどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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