.NET 正則表達式提供強大、靈活、高效的文本處理能力,兼容 Perl 5 語法,並擴展了獨有功能。核心類位於 System.Text.RegularExpressions 命名空間,可供所有 CLR 語言使用。
Regex:只讀正則表達式
Regex r = new Regex(@"\s2000"); // @ 字面量避免雙重轉義
Match:單次匹配結果
Match m = r.Match("123abc456");
if (m.Success) Console.WriteLine("Position: " + m.Index);
MatchCollection:所有非重疊匹配
MatchCollection mc = r.Matches("123abc4abcd");
for (int i = 0; i < mc.Count; i++) {
Console.WriteLine(mc[i].Value + " at " + mc[i].Index);
}
GroupCollection / CaptureCollection:分組與捕獲使用括號 (...) 定義組,Match.Groups 返回組集合,每組含 Captures 序列(受量詞影響可捕獲多次)。
Regex r = new Regex("(Abc)+");
Match m = r.Match("XYZAbcAbcAbcXYZAbcAb");
foreach (Group g in m.Groups) {
foreach (Capture c in g.Captures)
Console.WriteLine(c.Value + " at " + c.Index);
}
| 符號 | 含義 | 示例 |
|---|---|---|
^ | 字符串開始 | ^B |
$ | 字符串結束 | X$ |
. | 除換行外任意字符 | i.ation |
* | 前導字符 0 次或多次 | ra*t |
+ | 前導字符 1 次或多次 | ra+t |
? | 前導字符 0 次或 1 次 | ra?t |
\s | 空白字符 | \sa |
\S | 非空白字符 | \SF |
\b | 單詞邊界 | ion\b |
\B | 非單詞邊界 | \BX\B |
[abc]:a 或 b 或 c[a-z]:小寫字母[0-9]+:一個或多個數字(整數)| 選項 | 內聯 | 說明 |
|---|---|---|
| IgnoreCase | i | 忽略大小寫 |
| Multiline | m | ^$ 匹配行首尾 |
| ExplicitCapture | n | 僅捕獲命名/編號組 |
| Compiled | - | 編譯為 MSIL,啟動慢執行快 |
| Singleline | s | . 匹配換行符 |
| IgnorePatternWhitespace | x | 忽略模式中的空白,允許 # 註釋 |