如何将正则表达式匹配结果存储到变量中,在Notepad++中用于搜索/替换

4

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

例如,我有这段文字

ab iiids
as sasas
md aisjaij
as asijasija

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

.*?(?=[" "])

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

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

找不到解决方案。 这真的可能吗?


你可以使用捕获组。例如,以下模式(a)bc,它将匹配abc。替换看起来像$1foo。因此,如果输入为abc,则输出将是afoo - HamZa
1个回答

7
是的,在替换字符串中,$&$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等引用它们匹配的子字符串。

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

^[^ ]*(?=[ ])

这样可以确保您不会在不需要的地方获得其他匹配项。
最后,这里是一个参考资料,列出了替换字符串中所有可以执行的操作。

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