Vim 将字符串替换为格式相同但名称不同的字符串

Vim substitute string for same format string but different names

文件看起来像:

INSERT INTO x VALUES (48394, '9-10-2007', 19);
INSERT INTO x VALUES (99981, '3-5-2008', 45);

我想将每一行替换为:

INSERT INTO x VALUES (48394, STR_TO_DATE('9-10-2007', %d-%m-%y), 19);
INSERT INTO x VALUES (99981, STR_TO_DATE('3-5-2008', %d-%m-%y), 45);

我似乎找不到如何处理更改字符串名称以替换

:%s/<WHAT GOES HERE>/add in STR_TO_DATE(...)/

下面是一个解决方案示例: :%s/\(INSERT INTO x VALUES (.*,\) '\(.*\)'\(.*\)/ STR_TO_DATE('', %d-%m-%y)/g

Relevant reading

如果您的数据结构与 ' 分隔的其他字符串完全相同,并且内容始终是您要转换的日期,则只需搜索 '.*' 即可:

:%s/'.*'/STR_TO_DATE(&, %d-%m-%y)

更具体地说,即如果其他字符串出现在同一行:

:%s/'\d*-\d*-\d*'/STR_TO_DATE(&, %d-%m-%y)