2015-11-02 3 views
1

У меня есть регулярное выражение, где я хочу найти все пустые строки в выражении SQL (и заменить их NULL).Regex только соответствует последнему вхождению

Так что это:

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) 

Я хочу быть уверен, что я только обновление ЗНАЧЕНИЯ() массив, и это то, что я кулачок с, однако это только соответствует последнему заполнению '', а не другим 3 пустым строкам.

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

Возможно ли это?

+0

Я не думаю, что вы можете решить эту проблему с заменой одной строки регулярного выражения. Можете ли вы рассказать нам, какой язык вы используете, и, может быть, мы можем предложить элегантное решение? –

+0

Спасибо, это javascript, да, есть несколько способов сделать это в Javascript, но мне было интересно, можно ли это сделать только с регулярным выражением. – crankshaft

ответ

1

Ничего себе. это выглядит опасно.

Я думаю, что это будет работать:

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

Хотя технически еще 2 регулярных выражений, вы могли бы сделать это один вкладыш с ES6 :)

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

Большое спасибо за помощь, но я пытался добиться этого только с помощью регулярного выражения, есть несколько способов сделать это, если я использую другие функции js, такие как split, replace, substr и т. Д. – crankshaft

Смежные вопросы