re = /(\/\/[^"\n\r]*(?:"[^"\n\r]*"[^"\n\r]*)*[\r\n]|\/\*([^*]|\*(?!\/))*?\*\/)(?=[^"]*(?:"[^"]*"[^"]*)*$)/m
str = 'hey = "//comment" //comment "
hey = "//comment" //comment
hey = "/" //comment"
//
"//"/"
# complete line should be found
//comment
lorem ipsum # from this to line end
/*
all three lines should be found
*/ but not here anymore
var x = \\\\"this # should not be found\\\\"
var y = \\\\"this /* shouldn\\\\\'t */ match either\\\\"
var z = \\\\"but\\\\" & /* this must match */ \\\\"_\\\\"
Argh! what about a \\\\"multiline string\\\\\\\\
with a # mark\\\\\\\\
int it ?! \\\\"
'
# 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