【问题标题】:Notepad++ regex backreference doesn't seem to workNotepad++ 正则表达式反向引用似乎不起作用
【发布时间】:2019-01-30 07:27:42
【问题描述】:

我需要在不以:{}) 结尾的每一行末尾添加;

我在记事本++中使用这个:

  • 搜索:[^:\{\}\)]$
  • 替换为:\1;

它可以找到所有字符串,但是它将在行尾之前找到的最后一个字符替换为;,而不是将其添加到其中。我尝试了$1 而不是\1,但它没有改变任何东西——找到的文本仍然被删除。

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    您的模式没有捕获组,因此\1 是一个空字符串。改用$0 来指代整个比赛:

    查找内容[^:{})]$
    替换为$0;

    但是,在某些边缘情况下它可能会失败([^:{})]$ 模式匹配除:{}) 以外的任何字符,因此在行结束前至少需要 1 个字符) ,也许,你最好在这里使用否定的lookbehind:

    查找内容$(?<![:{})])
    替换为;

    $(?<![:{})]) 模式匹配行尾(带有$),然后(?<![:{})]) 否定后向查找确保没有:{}) 立即到当前位置的左侧。

    【讨论】:

    • 谢谢,我现在明白了! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    相关资源
    最近更新 更多