【问题标题】:How to store regex match in a variable to use with Search/Replace in Notepad++如何将正则表达式匹配存储在变量中以与 Notepad++ 中的搜索/替换一起使用
【发布时间】:2013-06-24 04:16:48
【问题描述】:

我需要使用模式捕获一个单词并存储在某个地方以用于替换操作:

例如我有这个文本

ab iiids
as sasas
md aisjaij
as asijasija

我可以使用以下模式捕获第一个空格之前的所有内容:

.*?(?=[" "])

假设我可以使用“$”来表示搜索和替换中的匹配项,所以我希望在替换字段中包含以下内容

INSERT INTO table (value) VALUES ("$")

找不到解决方案。 这甚至可能吗?

【问题讨论】:

  • 您可以使用捕获组。例如以下模式(a)bc,这将匹配abc。替换看起来像$1foo。因此,如果有 abc 作为输入,则输出将是 afoo

标签: regex notepad++


【解决方案1】:

是的,$&$0 表示替换字符串中的整个匹配项:

Find what: .*?(?=[ ])
Replace with: INSERT INTO table \(value\) VALUES \("$0"\)

请注意,您不需要在字符类中使用引号。否则你的比赛也将停止在报价。另请注意,还有另一个问题,您必须在替换字符串中转义括号(感谢 acdcjunior 注意到这一点)。这是因为 Notepad++ 使用了 boost,它支持括号分隔的条件构造。

使用您的输入,这将导致

INSERT INTO table (value) VALUES ("ab") iiids
INSERT INTO table (value) VALUES ("as") sasas
INSERT INTO table (value) VALUES ("md") aisjaij
INSERT INTO table (value) VALUES ("as") asijasija

对于更高级的用例,您可以将部分正则表达式括在括号中,并引用它们与$1$2 等匹配的子字符串。

顺便说一下,更明确的模式是:

^[^ ]*(?=[ ])

这可确保您不会在不想要的地方获得额外的匹配项。

最后,here is a reference 在替换字符串中可以做的所有事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-25
    • 2020-02-02
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 2011-04-05
    相关资源
    最近更新 更多