ホームページ >バックエンド開発 >C++ >C# で正規表現グループを使用してテキスト文字列から特定の情報を抽出するにはどうすればよいですか?

C# で正規表現グループを使用してテキスト文字列から特定の情報を抽出するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 19:28:30514ブラウズ

How do I extract specific information from a text string using regular expression groups in C#?

C# の正規表現グループ

C# では、正規表現はテキスト処理のための強力なツールを提供します。特定の情報を抽出するには、これらの式内でグループがどのように機能するかを理解することが重要です。正規表現グループがどのように使用され、特定のシナリオでの動作を解読してみましょう。

次の正規表現と入力文字列の例を考えてみましょう。

var pattern = @"\[(.*?)\]";
var user = "Josh Smith [jsmith]";

式 [(.*? )] は、左角括弧で始まり、角括弧内の任意の文字の非貪欲一致が続き、右角括弧で終わるテキストと一致します。

上記の入力で Regex.Matches を使用する場合、次の結果が得られます:

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

正規表現は部分文字列 "[jsmith]" と一致するため、これは理にかなっています。ただし、Groups コレクションに飛び込む価値はあります。

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

ここで、Groups[0] は角括弧を含む一致全体を表します。 Groups[1] には、角括弧内のテキスト (この場合は「jsmith」) が含まれます。正規表現には、角かっこ内の文字をキャプチャする (.*?) で識別されるキャプチャ グループが含まれています。これは、Groups[1] が "jsmith" を返す理由を説明しています。

Groups コレクション内のグループの数は正規表現自体に依存することに注意することが重要です。上の例では、キャプチャ グループが 1 つだけあるため、Groups には一致全体と最初にキャプチャされたグループという 2 つの要素があります。

この概念をさらに説明するために、より複雑な例を考えてみましょう。

var pattern = @"\[(.*?)\](.*)";
var match = Regex.Match("ignored [john] John Johnson", pattern);

このシナリオでは、正規表現は、角括弧で囲まれたテキストの後に他のテキストが続くものと一致します。 Groups コレクションの内訳は次のとおりです。

match.Value == "[john] John Johnson"
match.Groups[0].Value == "[john] John Johnson"
match.Groups[1].Value == "[john]"
match.Groups[2].Value == "John Johnson"

ご覧のとおり、Groups[1] は角かっこの最初のセット内のテキストをキャプチャし、Groups[2] はかっこの後のテキストをキャプチャします。最も内側のキャプチャ グループは、独自の Capture コレクションを持つこともできます。正規表現グループの仕組みを理解することで、開発者はこれらの強力な一致パターンを使用してテキスト文字列から特定の情報を効果的に抽出できます。

以上がC# で正規表現グループを使用してテキスト文字列から特定の情報を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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