Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

regex to replace backslash and single quote with single quote using postgres regexp_replace()

Just as the title states, I'm not the best w/ regex, so can anyone provide the appropriate regex for the following:

UPDATE table SET column = REGEXP_REPLACE(column, {regex}, '''');

Basically, I'd like to replace any instances of backslashes (\) followed by one or more single quotes with one single quote.

So, the string Hello World\'s or Hello World\'''''s should become Hello World's, but not Hello World\s.

like image 337
William Orazi Avatar asked Jan 14 '15 18:01

William Orazi


2 Answers

This is relatively straightforward. Note that both the backslash character \ as well as the single-quote character ' (which you escaped in the OP) need to be escaped. The difference is that the backslash has to be escaped in the regex itself, whereas the single quote is escaped in the string literal. Anyway, enough of that digression.

UPDATE table SET column = REGEXP_REPLACE(column, '\\''+', '''', 'g');

Hope this helps.

like image 57
David Faber Avatar answered Nov 03 '22 17:11

David Faber


You can try the following:

SELECT REGEXP_REPLACE(column, '\\''['']*', '''','g') from table

Edit: of course \''+ is better

SELECT REGEXP_REPLACE(column, '\\''+', '''','g') from table
like image 23
zen Avatar answered Nov 03 '22 19:11

zen