我需要使用模式捕获一个单词并存储在某个地方以用于替换操作:
例如,我有这个文本
ab iiids
as sasas
md aisjaij
as asijasija
Run Code Online (Sandbox Code Playgroud)
我可以使用以下模式捕获第一个空格之前的所有内容:
.*?(?=[" "])
Run Code Online (Sandbox Code Playgroud)
假设我可以使用'$'代表搜索和替换中的匹配,所以我想在替换字段中包含以下内容
INSERT INTO table (value) VALUES ("$")
Run Code Online (Sandbox Code Playgroud)
找不到解决方案.这甚至可能吗?
是,$&或$0代表替换字符串中的整个匹配:
Find what: .*?(?=[ ])
Replace with: INSERT INTO table \(value\) VALUES \("$0"\)
Run Code Online (Sandbox Code Playgroud)
请注意,您不需要字符类中的引号.否则你的比赛也将在报价处停止.还要注意,还有另一个问题,你必须在替换字符串中转义括号(感谢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
Run Code Online (Sandbox Code Playgroud)
对于更高级的用例,你可以用正则表达式的部分在括号中,并引用他们与匹配子$1,$2等.
顺便说一下,更明确的模式是:
^[^ ]*(?=[ ])
Run Code Online (Sandbox Code Playgroud)
这可以确保您不会在不需要的地方获得其他匹配项.