老實說,我很困惑,我沒想到會問這個,但是就這樣。
在 VIM 側,并且只有 VIM,我想執行全域搜索和替換。我的目標文本是:
51099 analgesic
43045 analgesic
70145 analgesic
52338 analgesic
41214
55309
34373
47003
50659
51327
這持續了數千行。對于所有不以“\tanalgesic”結尾的行(注意選項卡),我想保留數字并插入“\tanalgesic”。我嘗試了幾種方法,但都沒有(顯然)。
在 VIM 之外(在一般的正則運算式檢查器中), [0-9] $ 查找"一個或多個數字和行尾" 的所有實體。在 VIM 中,這不起作用(將添加:/ 表示進入命令模式,然后添加“/”進行搜索)。我很困惑為什么會這樣。
雖然這不起作用,但我希望解決方案看起來相似:
:%s/[0-9] $/(1)\tanalgesic/g
謝謝。
uj5u.com熱心網友回復:
例如,您可以使用 vim 非常神奇的模式\v
用于\1
對組 1 的反向參考。
:%s/\v(\d $)/\1\tanalgesic/g
沒有非常神奇模式的命令,組的轉義括號和量詞的轉義加號:
%s/\([0-9]\ $\)/\1\tanalgesic/g
| | | | |
| | | | ^ All occurrences
| | | ^^ Backreference to group 1
| | ^^ Escaped plus sign
| ^^ Escaped parenthesis for group 1
^ Substitute in whole file
輸出
51099 analgesic
43045 analgesic
70145 analgesic
52338 analgesic
41214 analgesic
55309 analgesic
34373 analgesic
47003 analgesic
50659 analgesic
51327 analgesic
有關詳細資訊,請參閱http://vimregex.com/。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/517296.html
標籤:正则表达式