定位符 (Anchors) 不消耗字元,僅判斷位置滿足條件。掌握定位符是撰寫精準正則的關鍵。
| 符號 | 名稱 | 比對位置 | 多行模式影響 |
|---|---|---|---|
^ | 行首 | 字串開頭 / 每行開頭 (Multiline) | Multiline 時比對每行開頭 |
$ | 行尾 | 字串結尾 / 每行結尾 (Multiline) | Multiline 時比對每行結尾 |
\A | 字串開頭 | 僅字串絕對開頭 | 不受 Multiline 影響 |
\Z | 字串結尾 | 字串絕對結尾 (或末尾 \n 前) | 不受 Multiline 影響 |
\z | 絕對結尾 | 僅字串最末端 | 不受 Multiline 影響 |
\b | 字邊界 | \w 與 \W 交接處 | - |
\B | 非字邊界 | \w 與 \w 或 \W 與 \W 間 | - |
\G | 上次比對結尾 | 連續比對起始位置 | - |
// 驗證整行輸入為 Email
^[\w.+-]+@[\w-]+\.[\w.-]+$
// 多行模式下提取每行開頭的數字
Regex.Matches(text, @"^\d+", RegexOptions.Multiline)
// 單字完整比對 (避免部分比對)
\bcat\b // 比對 "cat" 不比對 "category"
// 連續比對所有單字
string input = "one two three";
foreach (Match m in Regex.Matches(input, @"\w+")) {
Console.WriteLine(m.Value); // one, two, three
}
// 使用 \G 從上次結尾繼續 (搭配 Regex.Match.NextMatch)
^$ 未加 RegexOptions.Multiline 時僅比對整字串首尾\Z 允許末尾換行,嚴格驗證請用 \z\b 視 Unicode 類別判定,中文/日文邊界行為與英文不同

