【问题标题】:Reference regex when using find and replace in Notepad++在 Notepad++ 中使用查找和替换时参考正则表达式
【发布时间】:2018-04-30 23:45:30
【问题描述】:

我使用这个正则表达式^.*?\K\d+\.\d+\.\d+ 来搜索notepad++ 中每一行的第一个日期。它似乎工作得很好。

我使用的文本如下所示:

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

搜索给了我每个09.09.2017,但不是31.12.2017 在第二行。这正是我想要的。然后我想替换所有09.09.2017s,使它们变为*09.09.2017*

如何在 notepad++ 的替换字段中引用 ^.*?\K\d+\.\d+\.\d+?早些时候,我已经能够在替换字段中使用*\1* 执行此操作,其中\1 引用了我使用过的正则表达式,但现在似乎不起作用。

【问题讨论】:

    标签: regex replace notepad++


    【解决方案1】:

    您之前的正则表达式 looked like \K(([0-9]{2}).([0-9]{2}).([0-9]{4})) 带有围绕整个模式设置的捕获组。这就是为什么\1 提到的整场比赛也被归入第 1 组。

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

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

    替换为

    *$0*
    

    其中$0 是对整个匹配项的反向引用。

    【讨论】:

    • 除了$0$&$MATCH${^MATCH}也可以使用。
    • 谢谢!并感谢您注意到我的问题的连续性:) 当我第一次使用 Replace(一次)时,我无法让它工作,但是当我使用 Replace All 时它仍然有效,这正是我想要的。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 2015-01-11
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多