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

C# 正則表達式完整指南:Regex 類別、Match/Group、常用模式實戰

     編輯:C# 入門

命名空間與核心類別

using System.Text.RegularExpressions;
// 核心類別:Regex, Match, MatchCollection, Group, Capture

靜態方法快速上手

方法用途範例
Regex.IsMatch布林判斷Regex.IsMatch(input, @"^\d+$")
Regex.Match第一個符合Match m = Regex.Match(s, @"\d+");
Regex.Matches所有符合foreach (Match m in Regex.Matches(s, @"\d+"))
Regex.Replace替換Regex.Replace(s, @"\s+", " ")
Regex.Split分割Regex.Split(s, @"\s*,\s*")
Regex.Escape轉義元字元Regex.Escape("(test)") → \(test\)

實例化 Regex 物件 (效能較佳)


var regex = new Regex(@"\b\w{5,}\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (Match m in regex.Matches(text)) { ... }

Match / Group / Capture 階層結構


Match m = regex.Match("abracadabra", @"(a|b|r)+");
if (m.Success)
{
    Console.WriteLine(m.Value);        // "abra" (整個匹配)
    Console.WriteLine(m.Index);        // 0
    Console.WriteLine(m.Length);       // 4
    Console.WriteLine(m.Groups.Count); // 2 (Group 0 = 整個匹配, Group 1 = 第一個捕獲組)
    Console.WriteLine(m.Groups[1].Value); // "abra"
}

進階替換:MatchEvaluator


string result = Regex.Replace("a1b2c3", @"\d", m => (int.Parse(m.Value) * 2).ToString());
// "a2b4c6"

常用正則模式速查

需求模式說明
Email^[\w.-]+@[\w.-]+\.\w+$簡易版
手機 (台灣)^09\d{8}$09 開頭 10 碼
身分證字號^[A-Z][12]\d{8}$首字母 + 1/2 + 8 碼
IPv4^((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)$嚴格驗證
中文字[\u4e00-\u9fa5]基本漢字區
去除 HTML 標籤<[^>]*>貪婪匹配
去除前後空白^\s+|\s+$配合 Replace

效能與最佳實踐

  • 重複使用 → **實例化 Regex + Compiled 選項**
  • 避免災難性回溯:慎用 (.*)、(.+) 巢狀,改用 [^"]* 等否定字元組
  • 大量文字處理 → Regex.Split / Match.NextMatch() 避免一次建立巨大集合
  • 單行模式 RegexOptions.Singleline 讓 . 匹配換行

結語

System.Text.RegularExpressions 提供 Perl 5 相容、功能強大的正則引擎。掌握靜態方法、實例化選項、Group 捕獲、MatchEvaluator 替換,即能解決 95% 文字處理需求。

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