查找并替换另一个单词

时间:2018-11-30 22:32:53

标签: replace find

我有一个文件,其中包含单词“ Isl”。 (对于岛屿)或“ Isls”一词。 (用于岛屿),我想在所有行中分别将其替换为“ ISLAND”和“ ISLANDS”。

我使用此:%s/\<Isl.\>/ISLAND/g代替“ Isl”。但是由于某种原因,该命令找不到“ Isl”,而是找到“ Isls”(是,没有点)

为什么这不能按预期工作?

1 个答案:

答案 0 :(得分:1)

我猜您正在使用vi编辑器。您需要的命令是:%s/\<Isl\./ISLAND/g来替换Isl。到岛屿。然后:%s/\<Isls\./ISLANDS/g替换Isls。到岛屿。您可以使用:help regex了解更多详细信息。

其他匹配项不起作用的原因是\<\>匹配项的单词开头和结尾。对于ASCII,单词字符为[a-zA-Z0-9_]。句点不能是单词的一部分,因此如果您使用:%s/\<Isl\.\>/ISLAND/g,则它永远不会匹配任何内容。另外,':%s/Isl./ISLAND/g'表示匹配以Isl开头的4个字母序列,因此它将匹配Isla或Islb或Islc等。

\<Isl.\>不能满足您的要求。 .表示任何字符,\>表示单词结尾。因此,它将仅匹配以Isl开头的4个字母词。