четверг, 19 декабря 2013 г.

Двойной символ в одинарный с помощью регэкспа

Как разэкранировать строку, которая была экранирована удвоением символа?

Например, в файлах CSV удваивается кавычка (" -> ""), а также само значение обрамляется в кавычки, таким образом строка

My "fat" string!

становится

"My ""fat"" string!"

Чтобы разэкранировать такую строку, требуется заменить удвоенные кавычки на одиночные, а также удалить одиночные.

" ->
"" -> "

Это можно сделать с помощью такого регэкспа:
/"("{0,1})/
заменить совпадение на содержимое круглых скобок.

Пример для PHP:

preg_replace('/"("{0,1})/', '$1', '"My ""fat"" string!"');