re = /'([^'}{\\]*(?:\\')?[^'}{\\]*)'(?=(?:[^'}{\\]*(?:'[^'}{\\]*(?:\\')?[^'}{\\]*'?)?[^'}{\\]*)\})/m
str = '\'dont want\' don\\\'t want {dont want \'want this\', \'want this, je m\\\'appelle Robert\', dont want} don\\\'t want \'dont want\' {\'want this\'}
\'dont want\' and \'don\\\'t want\'
{\'want this\' and \'want this, je m\\\'appelle Robert\'}'
# 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