【问题标题】:Regex in Notepad++ like sedNotepad++ 中的正则表达式,如 sed
【发布时间】:2011-12-10 05:17:42
【问题描述】:

在 linux sed 中,我们可以使用“&”来匹配正则表达式。我可以在记事本++中做同样的事情吗?在查找和替换中,我可以使用正则表达式匹配的字符串用于替换部分吗?

【问题讨论】:

    标签: regex sed notepad++


    【解决方案1】:

    更新

    Notepad++ 6.x 版已发布,使用 PCRE 作为其正则表达式引擎进行查找和替换。您现在可以使用$0$&(但不能使用\&&)来引用替换字符串中的整个匹配项,而无需再捕获整个模式。

    例如,将foo 替换为$&bar$& 会产生foobarfoo


    旧答案

    恐怕在 Notepad++ 正则表达式中没有办法做到这一点。您必须手动捕获整个模式并在替换字段中使用\1

    例如,对于以下 sed 命令:

    sed s/foo/\&bar\&/
    

    为输入字符串foo 输出foobarfoo,Notepad++ 正则表达式中的等价物是:

    查找:

    (foo)
    

    替换为:

    \1bar\1
    

    【讨论】:

    • 对不起,我没明白,你能提供一个简单的例子吗,请不要介意只需要一点帮助
    • 我不明白为什么你说它在 notepad++ 中不可能,我可以在其中使用 /1。我的意思是,它和“&”是一样的,不是吗?
    • @user1068846:不,当您使用\1 时,您需要将括号添加到整个字符串中,就像我对(foo) 所做的那样。您不需要在 sed 中将整个模式括在括号中。
    • 所以这是唯一的区别,我可以添加括号:-) 非常感谢先生
    • 在我的 sed echo foo | sed s/foo/\&bar\&/ 版本中返回 &bar& 这是我所期望的,因为 & 不需要转义,除非你想返回 &
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 2010-09-19
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多