底下是 Gmini 整理的。
Vim Regex Pattern 詳細跳脫規則
Vim 的正規表達式語法非常強大,但它的轉義規則與 Perl 或 Python 等語言的標準正規表達式略有不同,尤其是在處理特殊字符時。Vim 將某些特殊字符分為 "魔法" (magic) 和 "非魔法" (nomagic) 兩種模式。
你可以使用不同的前綴來控制正規表達式的魔法模式:
\M
: 設定為 全魔法 (very magic) 模式。所有的特殊字符都視為魔法,不需要額外轉義。這是最像 Perl/PCRE 的模式。\m
: 設定為 魔法 (magic) 模式 (Vim 預設)。大部分特殊字符是魔法的,少數需要轉義。\v
: 設定為 極魔法 (very magic) 模式。所有的特殊字符都視為魔法,不需要額外轉義。這是最推薦使用的模式,因為它與常見的正規表達式引擎行為最接近,減少了混淆。\V
: 設定為 非魔法 (very nomagic) 模式。所有的特殊字符都視為普通字符,需要轉義才能具備特殊含義。
推薦:始終使用 \v
開頭的正規表達式,它讓你的模式更直觀。
使用 \v
(極魔法) 時的常用特殊字符和其含義:
關於轉義 (Escaping):
- 當使用
\v
(very magic) 模式時,幾乎所有你希望作為字面意義匹配的特殊字符,都需要在其前面加上一個反斜槓\
進行轉義。 這包括.
*
+
?
|
(
)
[
]
{
}
^
$
\
等。 - 反斜槓本身 (
\
) 在正規表達式中也是特殊字符,所以如果你要匹配字面意義上的反斜槓,你需要寫\\
。
例外 (通常不需要轉義的字面字符,除非在特定上下文中):
- 字母和數字通常不需要轉義。
- 逗號
,
、破折號-
、等號=
等非正規表達式特殊字符在模式中通常不需要轉義。
總結
在 Vim Script 中使用正規表達式時,為了清晰和與其他語言習慣保持一致,強烈建議在模式字串的開頭加上 \v
(very magic)。這樣,你就只需要記住那些本身就具有特殊意義的字符(如 .
*
(
[
等)需要用 \
來轉義,如果想讓它們作為字面字符匹配。
沒有留言:
張貼留言