如何在变量中存储正则表达式匹配以与Notepad ++中的“搜索/替换”一起使用

时间:2013-06-26 20:37:01

标签: regex notepad++

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

例如我有这个文本

ab iiids
as sasas
md aisjaij
as asijasija

我可以使用以下模式在第一个空格之前捕捉到的东西:

.*?(?=[" "])

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

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

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

1 个答案:

答案 0 :(得分: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等匹配的子字符串。

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

^[^ ]*(?=[ ])

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

最后,here is a reference您可以在替换字符串中执行的所有操作。