re = /\bx\.set\((?:\s*(?:,\s*)?(?<o>[-+]?\d*\.?\d+(?:[Ee][-+]?\d+)?|\w+(?<a>\((?:[^()]++|(?&a))*\))*|'[^'\\]*(?:\\.[^'\\]*)*'|"[^"\\]*(?:\\.[^"\\]*)*"))*\s*\)/m
str = 'ver = \'1.0\'
if x.set(\'1.2\'):
p = x.set(\'python_version\', None)
x = x.set(\'test_template\', DEFAULT, p(x,b),
z())'
# 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