正则表达式仅匹配上次出现

时间:2015-11-02 03:50:56

标签: 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个空字符串。

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

这可能吗?

1 个答案:

答案 0 :(得分:1)

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

我认为这样可行:

myString.replace(/VALUES.*\(.*\)/, function (values) {
  return values.replace(/''/g, 'null');
});

虽然技术上仍然是2个正则表达式,但你可以用es6制作一个单行程:)

myString.replace(/VALUES.*\(.*\)/, str => str.replace(/''/g, 'null'));