$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 ?! \\\\"
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
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 PHP, please visit: http://php.net/manual/en/ref.pcre.php