在Notepad++中使用查找和替换时参考正则表达式

3
我使用这个正则表达式^.*?\K\d+\.\d+\.\d+在notepad++中搜索每一行的第一个日期。它似乎工作得很好。
我处理的文本看起来像这样:

Nå skal folk få fred, iTromsø, 09.09.2017 19:09 Martin Lægland, Publisert på nett.
Nå skal folk få fred, iTromsø, 09.09.2017, Martin Lægland 31.12.2017 Publisert på nett.
Nå skal folk få fred, iTromsø, 09.09.2017 19:09 Martin Lægland, Publisert på nett。

搜索结果给出了每个09.09.2017,但不包括第二行的31.12.2017。这正是我想要的。然后,我想将所有的09.09.2017替换成*09.09.2017*
在notepad++的替换字段中如何引用^.*?\K\d+\.\d+\.\d+?以前我能够使用*\1*在替换字段中完成这个操作,其中\1引用我使用的正则表达式,但现在似乎不起作用。
2个回答

2

您之前的正则表达式看起来像\K(([0-9]{2}).([0-9]{2}).([0-9]{4})),并在整个模式周围设置了一个捕获组。这就是为什么\1指的是整个匹配项,也被捕获到第一组中。

您可以再次使用(...)捕获整个模式并使用*\1*,或者使用$0反向引用而不是\1

^.*?\K\d+\.\d+\.\d+

替换为

*$0*

$0是整个匹配的后向引用。

enter image description here


除了 $0$&$MATCH,还可以使用 ${^MATCH} - Wiktor Stribiżew
1
谢谢!感谢您注意到我的问题的连续性 :) 当我第一次使用Replace(一次)时,我无法使其工作,但当我使用Replace All时它可以工作,这正是我想要的。 - Thomas Tallaksen

0

你可以使用"$&"代替\1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接