首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 正則表達式深度解析(四):群組捕獲機制詳解與兩大處理範式比較

     編輯:關於C語言

群組與捕獲集合運作細節

模式:(abra(cad)?)+ — 外層群組 1 匹配 abra 後可選接 cad,整體重複一次以上。

輸入:abracadabra1abracadabra2abracadabra3

執行結果關鍵觀察:

  • Group 1 最後值為 abra(最後一次重複匹配),但 CaptureCollection 含兩個捕獲:abracad(索引 0, 長度 7)、abra(索引 7, 長度 4)
  • Group 2(內層 cad)最後值 cad,單一捕獲

Group.ToString() 回傳最後一次捕獲值;若需所有重複捕獲,必須遍歷 CaptureCollection。

基於流程 vs. 基於運算式 兩大處理範式

範式特點適用場景
基於流程用 foreach 迭代 Regex.Matches,在 C# 程式碼中處理每個匹配邏輯複雜、需呼叫外部 API、多步驟轉換
基於運算式用 Regex.Replace(pattern, evaluator) 或單一複雜模式完成純文字轉換、效能敏感、邏輯可宣告式表達

最佳實務:兩者結合 — 以 Regex 引擎完成結構匹配,複雜業務邏輯在 Evaluator 或迴圈中處理。

基於流程範例:單字首字大寫

string text = "the quick red fox jumped over the lazy brown dog.";
string pattern = @"\w+|\W+"; // 單字或非單字
string result = "";
foreach (Match m in Regex.Matches(text, pattern)) {
    string x = m.Value;
    if (char.IsLower(x[0])) x = char.ToUpper(x[0]) + x.Substring(1);
    result += x;
}
// 結果:"The Quick Red Fox Jumped Over The Lazy Brown Dog."
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved