Regex 正则表达式只匹配最后一次出现
我有一个正则表达式,希望在其中查找SQL语句中的所有空字符串(并用NULL替换它们) 因此: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个空字符串
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'));