4

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

例如我有这个文本

ab iiids
as sasas
md aisjaij
as asijasija

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

.*?(?=[" "])

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

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

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

4

1 回答 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,依此类推。

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

^[^ ]*(?=[ ])

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

最后,这里是您可以在替换字符串中执行的所有操作的参考。

于 2013-06-26T21:41:29.470 回答