首頁  >  文章  >  後端開發  >  正規表示式組在 C# 中如何運作?

正規表示式組在 C# 中如何運作?

Patricia Arquette
Patricia Arquette原創
2024-10-29 12:28:02259瀏覽

How do Regular Expression Groups Work in C#?

C# 中的正規表示式群組

在下列程式碼區塊中,提供的正規表示式擷取方括號內的內容:

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

輸入使用者== "Josh Smith [jsmith]":

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

但是,符合[0].Groups.Count == 2,其中:

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 處都有一個組,這始終是整個比賽。
  • 附加組的數量取決於正規表示式中定義的捕獲組。
  • 如果沒有定義捕獲組,則匹配將只有一組。

在提供的範例中,由於模式包含一個擷取組,因此 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 .值為「[john][johnny]」。
  • match.Groups[0] 為「[john][johnny]」。
  • match.Groups[1] 為[john] [約翰尼].
  • match.Groups[1].Captures[0] 是[約翰].
  • match .Groups[1].Captures[1] 是[約翰尼].

理解這些概念對於利用C# 中正規表示式群組的強大功能至關重要。

以上是正規表示式組在 C# 中如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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