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

C# 正則表達式入門教程:元字符、轉義與限定符詳解

     編輯:更多程式設計知識

正則表達式是處理字符串匹配、提取、替換的強大工具。C# 通過 System.Text.RegularExpressions 命名空間提供完整支持。本文介紹核心語法:元字符、轉義字符、限定符(量詞),助你快速上手。

一、常用元字符

元字符具有特殊含義,是正則表達式的基礎構建塊:

元字符說明示例
.匹配除換行符 \n 以外的任意單字符a.c 匹配 "abc", "aXc"
\d匹配數字字符,等價於 [0-9]\d{3} 匹配三位數字
\D匹配非數字字符,等價於 [^0-9]
\w匹配字母、數字、下劃線,等價於 [a-zA-Z0-9_]\w+ 匹配單詞
\W匹配非單詞字符
\s匹配任意空白字符(空格、制表符 \t、換行 \n 等)\s+ 匹配多個空格
\S匹配非空白字符
^匹配字符串開始位置(多行模式下匹配行首)^Hello
$匹配字符串結束位置(多行模式下匹配行尾)World$
\b匹配單詞邊界(字母數字與非字母數字之間)\bword\b
\B匹配非單詞邊界
元字符表
元字符補充

二、轉義字符

若需匹配元字符本身(如 .、*、?、\ 等),必須使用反斜杠 \ 轉義:

  • \. 匹配字面點號 .
  • \* 匹配字面星號 *
  • \\ 匹配字面反斜杠 \

在 C# 字符串中,反斜杠本身需轉義,建議使用 逐字字符串(@"")避免雙重轉義:

// 普通字符串:雙重轉義
string pattern1 = "\\d+\\.\\d+"; 

// 逐字字符串:更直觀
string pattern2 = @"\d+\.\d+"; // 匹配 "123.45" 格式數字
轉義字符示例

三、限定符(量詞)

限定符指定前導字符/組出現的次數:

限定符說明等價形式示例
*零次或多次(貪婪){0,}ab*c 匹配 "ac", "abc", "abbc"
+一次或多次(貪婪){1,}\d+ 匹配至少一位數字
?零次或一次(可選){0,1}colou?r 匹配 "color" 或 "colour"
{n}恰好 n 次\d{3} 匹配三位數字
{n,}至少 n 次\d{2,} 匹配至少兩位數字
{n,m}n 到 m 次\d{3,5} 匹配 3-5 位數字
限定符表

四、貪婪 vs 非貪婪(懶惰)匹配

默認限定符為貪婪模式,盡可能多匹配;在限定符後加 ? 啟用非貪婪模式,盡可能少匹配:

string input = "<div>Content</div><span>More</span>";

// 貪婪:匹配從第一個 < 到最後一個 >
Regex greedy = new Regex(@"<.+>"); 
// 結果: "<div>Content</div><span>More</span>"

// 非貪婪:匹配單個標籤
Regex lazy = new Regex(@"<.+?>"); 
// 結果: "<div>", "</div>", "<span>", "</span>"

五、C# 核心類與常用方法

  • Regex.IsMatch(input, pattern):判斷是否匹配
  • Regex.Match(input, pattern):獲取首個匹配 Match 對象
  • Regex.Matches(input, pattern):獲取所有匹配 MatchCollection
  • Regex.Replace(input, pattern, replacement):替換匹配內容
  • Regex.Split(input, pattern):按正則分割字符串

六、實戰練習:驗證郵箱格式

string emailPattern = @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$";
string[] testEmails = { "user@example.com", "invalid@.com", "name@domain.co.uk" };

foreach (var email in testEmails) {
    bool isValid = Regex.IsMatch(email, emailPattern);
    Console.WriteLine($"{email}: {(isValid ? "有效" : "無效")}");
}

掌握以上核心語法,配合 C# Regex 類的豐富 API,即可應對大多數文本處理場景。進階學習可深入分組捕獲、零寬斷言、RegexOptions 選項等特性。

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