{pattern}

正規表達式

| < > ? 這些符號前面需要加跳脫字元

(?:x) 找出 'x',這動作不會記憶 ()為 group 的意思,檢查時會再 wrap 一次,若有 g flag 會無效, ?: 代表只要 group 就好,不要 wrap

\< 匹配單詞的開始

\> 匹配單詞的結尾

| 或者

^ 匹配輸入的行首

$ 匹配輸入的結尾

. 匹配除了換行符號之外的單一字元

\_. 匹配任意單一字元,包含換行

:help ordinary-atom 完整內容參考文件

[]

匹配括號裡的字元

可以搭配 - 符號指定範圍

[A-Z] 匹配大寫 A 到 Z 的字元

[a-z] 匹配小寫 a 到 z 的字元

[1-9] 匹配數字 1-9

[^] 匹配非括號裡的字元

()

說明

匹配 () 裡面的內容,() 需要加跳脫字元

number () 有分組的功能 等同於第 number 個 () 匹配的內容,可以填1 ~ 9 可做為替換命令使用,number 需要加跳脫字元

延伸

%() 括號不會被捕獲子匹配,\number 將無效

舉例

:s/\(a\) b \(c\)/\2 b \1/ 將匹配到的 a b c,替代成 c b a

量詞

{} 匹配次數,{ 前面需要加跳脫字元

指令

+ 匹配前面的匹配原1或多次 前面需要加跳脫字元 貪婪匹配模式

* 匹配前一字元 0 至多次 貪婪匹配模式

?= 匹配前面的匹配原0或1次 前面需要加跳脫字元 貪婪匹配模式

:help multi 完整內容參考文件

貪婪匹配

貪婪匹配為盡可能多的匹配 非貪婪匹配為盡可能少的匹配

舉例

aaabaab

/[ab]\+b 匹配 aaabab

/[ab]\{-1,}b 匹配 aaab 和 aab

特殊字元

\\ 插入一個反斜線

\_s 匹配一個空白或一行

\_s\+ 匹配任意數量的空白或一行

\0& 等同於整個匹配內容

\C 區分大小(放在結尾處)

\D 所有非數字的字元

\L 小寫字母以外的所有字元

\W 等同於 [^0-9A-Za-z_]

\a 一個字母

\b 英文邊界,單字開頭或結尾的空白

\c 不區分大小寫(放在結尾處)

\d 吻合數字,寫法等同於 [0-9]

\l 一個小寫字母

\r 插入一個換行符號

\s 匹配單個空格字符,包括空格,製表符,換頁符,換行符

\t 插入一個 tab 標籤

\u 一個大寫字母

\w 等同於 [0-9A-Za-z_]

\x 等同於 [0-9a-fA-F]

\ze 匹配的結束,其外會被排除高亮,但仍會被查找

\zs 匹配的起始,其外會被排除高亮,但仍會被查找

:help character-classes 完整內容參考文件

Last updated