我想用正则表达式替换出现在多行中且带有字符“x”的字符串:
问题是用前面的 x 替换 x 后面有一个整数的单词,例如在包含以下内容的文件中:
x44name
xjanname
x50name
例如:
:1,2s/x[0-9]name/num/g
我需要使用 sed 或其他命令来搜索和替换该单词吗?
出现以下错误:
E486: Pattern not found: x[0-9]name
答案1
如果你可以有任意数量的数字(包括 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 表示仅替换每行的第一个匹配项
答案2
如果我理解正确的话,“num”是“x”之后的下一个数字,请明白这一点:
:%s/x\([0-9]\)/\1/g