Text-Processing
正則表達式匹配 Vim 中的行首和行尾(引用整行)
對於具有以下範例的行的初始文件:
1 12 123 1234 12345
文件的期望狀態是
'1' '12' '123' '1234' '12345'
我一直在使用兩個命令來執行此操作,
:%s/^/'/g
並且:%s/$/'/g
,我想進入一個。但是,當我嘗試:%s/[$^]/'/g
我得到錯誤
E486: Pattern not found: [$^]
我知道括號中的前導
^
意味著排除,所以我認為$
放在第一位意味著匹配行的開頭和結尾,這顯然不會發生。如何在vim中匹配行的開頭和結尾?
怎麼樣:
:%s/.*/'&'/
“用單引號前後的那些字元替換零個或多個字元”。
^
並且$
不要將那些含義(行首或行尾)包含在[ ]
用於選擇一組字元的內部。在 內部[ ]
,大多數正則表達式運算符都失去了意義(並且一些字元獲得了特殊含義,或者獲得了不同的含義)。前導表示該組被否定 - 匹配^
除這些字元之外的所有內容。因此匹配除 之外的任何字元。(並且只匹配and字元。)[]``[^$]``$``[$^]``$``^
如果要匹配行的開頭或結尾,請使用
/^\|$/
, where|
is or(需要在 Vim 的預設正則表達式模式下進行轉義)。所以:
:%s/^\|$/'/g
The
g
是必需的,因為^
and$
是兩個獨立的匹配項,s
預設情況下只作用於一行中的第一個匹配項。