如何在 Notepad++ 中替换搜索结果中的第 n 个单词?

如何在 Notepad++ 中替换搜索结果中的第 n 个单词?

我在 Notepad++ 中有如下文本行:

dog cat duck fan dog donkey

我想将第二次出现的单词“dog”替换为“peacock”,就像下面这样。

dog cat duck fan peacock donkey

答案1

你可以用所谓的常用表达,见下文。我不确定您是否熟悉它们,但正则表达式(dog.*)(dog)将匹配单词“dog”出现两次的所有行,并将$1peacock查找结果替换为匹配的第一部分(dog.*)后跟peacock。确保将对话框底部的搜索模式设置为“正则表达式”。

在此处输入图片描述

这将产生以下结果:

在此处输入图片描述

答案2

需要替换的是第 n 个单词还是第二个出现的单词?

对于前者,使用这样的正则表达式

在替换窗口中输入CTRL+ 。h

在“查找内容:^(([^ ]+ ){4})([^ ]+ )(.*)
替换为”中$1peacock$3
,取消选中所有框并选择单选按钮“正则表达式”

解释一下 RegEx:

  • ^锚点位于行首、$行末
  • ()建立一个捕获组
  • ([^ ]+ )表示[]一个类,^里面的表示否定类,所以这意味着 - 不是空格,聚集+至少一个但尽可能多。后跟一个空格。总的来说,这将匹配第一个单词。
  • 以下{4}获取 4 个字,由于它被另一组括号括起来,因此此捕获组获取前四个字
  • 下一个单词和空格是要替换的,([^ ]+ )然后是行的其余部分(.*)$
  • 替换将重新插入第一个(嵌套)组,并$1替换 peacock该行的其余部分,并$3丢弃第 5 个单词$2

相关内容