re = /(\n|;|^)"([^";\n]*?)"([^";\n]+?)"([^";\n]*?)"(\n|;|$)/
str = 'A stable and simple RegEx, which escapes double-quotes (") in a CSV file.
## Tests ##
"Great thing?!*";"I love RegEx!";"And especially "regex101.com"!";"Just amazing..."
"Something090324*?!*";"Somethi"ng090"324*?!*";"Something090324*?!*";"Something090324*?!*"
Ignore"THIS"ItIsNotARealQuote?!*;"This"is"real!";HereIsNoQuoteSymbolAtAll;This"IsOnlyOneQuoteSymbol
CSV: Escape double-quotes (") in quoted
## Issues ##
- Does not support embedded line breaks, but you can easily modify it to support them. Note that they are currently forbitten to be more stable.
- Does only allow " for quoting. (Replace it in the whole RegEx to change this)
- Only works with ; as a separator. (Replace it in the whole RegEx to change this)
- Does not allow separator character inside of quotes string. Look at the following example:
"Example "string"";"works"
"Example "string";";"fails"
- Get\'s problems when the issue happens "too often", which means it shows up in cells which are directly side-by-side. You may work around this issue by running it multiple times:
"run 1 time ";"a string with a "small" issue";"and "another" one"
"run 2 times";"a string with a ""small"" issue";"and "another" one"
- It only works with quoted strings (no single " are escaped; only double ones)
## Changelog ##
v1.0 - 2016-01-25
- released
Author: rugk <rugk@posteo.de>'
subst = '\\1"\\2""\\3""\\4"\\5'
result = str.gsub(re, subst)
# Print the result of the substitution
puts result
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html