如何匹配以大写字母和特定字母结尾的单词?


9

我有lblSERINOd句子中的单词。单词之间用空格隔开。

我想将d所有此类单词的末尾替换为u。因此,例如lblSERINOd将看起来像lblSERINOu

我曾尝试过,s/.*\ud /u /g但Vim表示找不到.*\ud

这里有什么问题?

Answers:


10

一种方法是:

:%s/\u\zsd\>/u/g

起初,我认为新的Vim的正则表达式引擎(被标榜为“更快,但有限”)无法理解\u:substitute,但这种情况并非如此。我宁可认为现在的OP忘记使用%和简单的搜索就错线; 这可以解释错误消息,但是当然仍然需要确认为“该”原因。


2
您确定引擎是“ re”吗?我不知道这有什么不同。
克里斯蒂安·布拉班德

是的,一点也不知道。。。我做了一个没有用的快速测试,然后pattern在帮助文件中重新阅读,看到提到新引擎比旧引擎更受限制,假设是原因.. 。我的第一个测试是相当/可能是有缺陷的
VanLaser

5

看来您可能已将Vim的'magic'选项从其默认值更改为'nomagic'。您可以使用以下命令进行检查

:verbose set magic?

:help / magic所述'nomagic'导致将正则.表达式中的视为字面点,而不是表示“匹配任何字符”的元字符。

强烈建议将此选项保留为默认值。这是一些确实不应该使用的选项,可能会在插件中引起细微的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.