re = /(?<=[\[,])\s*(['\"])(?:(\1)|.)*?\1(?=\s*[,\]])/m
str = '[ "A", ""B"",\'C\' , " D"]
[ "A", "\'B\'",\'C\' , " D"]
[ "A", \'\'B\'\',\'C\' , " D"]
[ "A", \'"B"\',\'C\' , " D"]
[ "A", \'8 o\'clock\',\'C\' , " D"]
[ "A", "Ol\' 8 o\'clock",\'C\' , " D"]
["Some Text"]
["Some more Text"]
["Even more text about \\"this text\\""]
["Ol\' 8 o\'clock"]
[\'8 o\'clock\']
[ \'8 o\'clock\']
[\'Ol\' 8 o\'clock\']
[""B"]
["\\"B"]
["\\\\"B"]
["\\\\\\"B"]
["\\\\\\\\"B"]'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
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