Regex 正则表达式只匹配最后一次出现

Regex 正则表达式只匹配最后一次出现,regex,Regex,我有一个正则表达式,希望在其中查找SQL语句中的所有空字符串(并用NULL替换它们) 因此: INSERT INTO sometable (F1,F2,F3,F4,F5) VALUES ('','',"xxx's",'','') 变成这样: INSERT INTO sometable (F1,F2,F3,F4,F5) VALUES (NULL,NULL,"xxx's",NULL,NULL) 我想确保我只更新VALUES()数组,这是我使用的,但是这只匹配上次出现的“”而不是其他3个空字符串

我有一个正则表达式,希望在其中查找SQL语句中的所有空字符串(并用NULL替换它们)

因此:

INSERT INTO sometable (F1,F2,F3,F4,F5) VALUES ('','',"xxx's",'','')
变成这样:

INSERT INTO sometable (F1,F2,F3,F4,F5) VALUES (NULL,NULL,"xxx's",NULL,NULL)
我想确保我只更新VALUES()数组,这是我使用的,但是这只匹配上次出现的“”而不是其他3个空字符串

/VALUES.*\(.*('').*\)/

这可能吗?

哇。这看起来很危险,哈哈

我认为这是可行的:

myString.replace(/VALUES.*\(.*\)/, function (values) {
  return values.replace(/''/g, 'null');
});
虽然从技术上讲仍然是两个正则表达式,但您可以使用es6使其成为一个单行程序:)


我不认为用一个正则表达式字符串替换就可以解决这个问题。您能告诉我们您使用的是哪种语言吗?也许我们可以建议一个优雅的解决方案?谢谢,它是javascript,是的,javascript有几种方法可以做到这一点,但我想知道是否只有使用regex才能实现。非常感谢您的帮助,但我试图仅使用regex实现它,如果我使用其他js函数,比如split、replace、substr等,有很多方法可以做到这一点。
myString.replace(/VALUES.*\(.*\)/, str => str.replace(/''/g, 'null'));