Regular-Expression

在vi中用正則表達式搜尋和替換?

  • May 28, 2015

我想用字元“x”出現在多行中的正則表達式替換一個字元串:

問題是用前面的 x 在 x 後面有一個整數替換單詞,例如在包含以下內容的文件中:

x44name
xjanname
x50name

例如:

:1,2s/x[0-9]name/num/g

我需要使用 sed 或其他命令來搜尋和替換單詞嗎?

出現以下錯誤:

E486: Pattern not found: x[0-9]name

如果你可以有任意數量的數字(包括 0),你應該這樣做

:%s/x[0-9]*name/num/g

如果總是兩個

:%s/x[0-9][0-9]name/num/g

當然你也可以使用 \d 代替

$$ 0-9 $$

:%s/x\d*name/num/g
  • %s表示搜尋整個文件
  • s意味著只搜尋目前行
  • g表示給定行中的所有匹配項
  • 沒有 g 表示只替換每行的第一個匹配項

如果我理解正確,並且“num”是“x”之後的下一個數字,請注意:

:%s/x\([0-9]\)/\1/g

引用自:https://unix.stackexchange.com/questions/206102