Text-Processing
如何使用變數替換 vim 正則表達式
我有一個大文件,其中包含以下形式的幾行:
USet07-1 USet07-2 USet08-1 USet08-2 . . . USet22-2 . . .
我想
-
從vim
. 我搜尋字元串::/USet\d\d-\d
但是當我嘗試用
:%s/Uset\d\d-\d/USet\d\d\d
我顯然得到
USetddd
對於所有情況。但我想要的是:
USet071 USet072 USet081 USet082 . . . USet222 . . .
如何才能做到這一點?我可以重複使用部分匹配字元串並在替換中使用它嗎?
是的,您可以使用擷取組。基本上,你用等包裹模式的部分
\(...\)
並在替換部分中引用它\1
::%s/Uset\(\d\d\)-\(\d\)/USet\1\2
由於您只想刪除模式的單個部分,因此更短的選項是通過
\zs
(match start) 和\ze
(match end) 限制實際匹配(但仍然斷言周圍的東西也存在)::%s/Uset\d\d\zs-\ze\d//
這些都是非常基本的東西,擷取組在許多基於正則表達式的工具(如
sed
)中很常見。了解如何查找命令和導航內置:help
;它很全面,並提供了許多提示。你不會像其他編輯器那樣快速學習 Vim,但如果你致力於持續學習,它將證明是一個非常強大和高效的編輯器。