我在 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