首頁  >  文章  >  後端開發  >  C# 中的正規表示式群組如何捕獲和存取匹配的子字串?

C# 中的正規表示式群組如何捕獲和存取匹配的子字串?

DDD
DDD原創
2024-10-29 18:48:57981瀏覽

How do Regular Expression Groups in C# Capture and Access Matched Substrings?

C# 中的正規表示式群組:了解符合結果

考慮下列C# 程式碼區塊:

<code class="csharp">var pattern = @"\[(.*?)\]";
var matches = Regex.Matches(user, pattern);
if (matches.Count > 0 && matches[0].Groups.Count > 1)
    ...</code>

考慮下列C# 程式碼區塊:

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

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

This程式碼使用正規表示式從使用者輸入字串中提取括號內的文字。對於輸入“Josh Smith [jsmith]”,程式碼正確返回以下結果:

  • 但是,後續行提出了問題:
匹配分組

在正規表示式中,群組用於捕獲匹配的特定部分。預設情況下,整個匹配項在組 0 中捕獲。可以使用括號定義其他捕獲組。

在提供的程式碼中,正規表示式定義單一捕獲組,以 (.*?) 表示。此組捕獲方括號內的文字(在本例中為 jsmith)。因此:

  • matches[0].Groups[0] 包含整個匹配,包括方括號: [jsmith]
matches[0].Groups[1] 包含號內捕獲的文字: jsmith

巢狀組
  • 在較複雜的正規表示式中,可以有嵌套組。在這些情況下,每個組都包含自己的捕獲集。但是,在給定的程式碼中,只有一層分組,因此:
  • matches[0].Groups[1].Captures 總是空。
其他注意事項組0: 請務必注意,組0 始終包含整個匹配項,無論是否定義了任何捕獲組。 組數:正規表示式匹配中的組數取決於模式中定義的捕獲組的數量。在提供的範例中,只有一個捕獲組,因此總共有兩組。

以上是C# 中的正規表示式群組如何捕獲和存取匹配的子字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn