我有一个文件,其中包含单词“ Isl”。 (对于岛屿)或“ Isls”一词。 (用于岛屿),我想在所有行中分别将其替换为“ ISLAND”和“ ISLANDS”。
我使用此:%s/\<Isl.\>/ISLAND/g
代替“ Isl”。但是由于某种原因,该命令找不到“ Isl”,而是找到“ Isls”(是,没有点)
为什么这不能按预期工作?
答案 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个字母词。