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

C# 正則表達式進階:分組、後向參考與替換實戰

     編輯:關於C#

分組與捕獲

括號 () 定義捕獲群組,預設自動編號 (Group 0 為完整比對)。(tr|b)ee 比對 "tree" 或 "bee",Group 1 捕獲 "tr" 或 "b"。命名群組 (?<name>...) 提升可讀性與維護性。

後向參考 (Backreference)

\1、\k<name> 參考前面捕獲群組內容。實用場景:HTML 標籤配對 <(?<tag>\w+)>.*?</\k<tag>>、重複單字偵測 \b(?<word>\w+)\b\s+\k<word>\b。

替換應用

string input = "2024-01-15";
string pattern = @"(?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2})";
string replacement = "${d}/${m}/${y}"; // 15/01/2024

var result = Regex.Replace(input, pattern, replacement);
// 或使用 MatchEvaluator 複雜邏輯
var result2 = Regex.Replace(input, pattern, m => 
    $"{m.Groups["d"].Value}/{m.Groups["m"].Value}/{m.Groups["y"].Value}");

非捕獲群組與進階構造

  • (?:...) 非捕獲群組,僅分組不佔用群組編號
  • (?=...) 正向先行斷言 (Zero-width positive lookahead)
  • (?!...) 負向先行斷言
  • (?<=...) 正向後行斷言 (固定寬度)
  • (?<!...) 負向後行斷言
  • (?#...) 註解

RegexOptions 關鍵選項

選項說明
IgnoreCase不區分大小寫
Multiline^$ 比對行首行尾
Singleline. 比對換行符
ExplicitCapture僅命名群組捕獲
Compiled編譯為 IL 提升重複使用效能
CultureInvariant忽略文化特性差異

分組示意
後向參考
替換範例

本文對應《叩響 C# 之門》第 20.7-20.8 節教學內容

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved