#include <MsgBoxConstants.au3> ; to declare the Constants of MsgBox
Local $sRegex = "(\n|;|^)"([^";\n]*?)"([^";\n]+?)"([^";\n]*?)"(\n|;|$)"
Local $sString = "A stable and simple RegEx, which escapes double-quotes (") in a CSV file." & @CRLF & _
"" & @CRLF & _
"## Tests ##" & @CRLF & _
""Great thing?!*";"I love RegEx!";"And especially "regex101.com"!";"Just amazing..."" & @CRLF & _
""Something090324*?!*";"Somethi"ng090"324*?!*";"Something090324*?!*";"Something090324*?!*"" & @CRLF & _
"Ignore"THIS"ItIsNotARealQuote?!*;"This"is"real!";HereIsNoQuoteSymbolAtAll;This"IsOnlyOneQuoteSymbol" & @CRLF & _
"" & @CRLF & _
"CSV: Escape double-quotes (") in quoted " & @CRLF & _
"" & @CRLF & _
"## Issues ##" & @CRLF & _
"- 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." & @CRLF & _
"- Does only allow " for quoting. (Replace it in the whole RegEx to change this)" & @CRLF & _
"- Only works with ; as a separator. (Replace it in the whole RegEx to change this)" & @CRLF & _
"- Does not allow separator character inside of quotes string. Look at the following example:" & @CRLF & _
""Example "string"";"works"" & @CRLF & _
""Example "string";";"fails"" & @CRLF & _
"- 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:" & @CRLF & _
""run 1 time ";"a string with a "small" issue";"and "another" one"" & @CRLF & _
""run 2 times";"a string with a ""small"" issue";"and "another" one"" & @CRLF & _
"- It only works with quoted strings (no single " are escaped; only double ones)" & @CRLF & _
"" & @CRLF & _
"## Changelog ##" & @CRLF & _
"v1.0 - 2016-01-25" & @CRLF & _
"- released" & @CRLF & _
"" & @CRLF & _
"Author: rugk <rugk@posteo.de>"
Local $sSubst = "\1"\2""\3""\4"\5"
Local $sResult = StringRegExpReplace($sString, $sRegex, $sSubst)
MsgBox($MB_SYSTEMMODAL, "Result", $sResult)
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 AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm