var js = '\
// /* C++ comment */ \\ \n \
/* C++ comment (cont) */ \n \
/* t "h /* is" \n \
is first C-style /* \n \
// comment */ \n \
and /*second C-style*/ \n \
then /*last C-style*/ \n \
' ;
var cmtrx1 = /^(?:\/\/(?:[^\\]|\\\n?)*?\n|(?:"(?:\\[\S\s]|[^"\\])*"|'(?:\\[\S\s]|[^'\\])*'|[^\/"'\\]*))+(\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\/)/ ;
var cmtrx2 = /(\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\/)|(\/\/(?:[^\\]|\\\n?)*?)\n|(?:"(?:\\[\S\s]|[^"\\])*"|'(?:\\[\S\s]|[^'\\])*'|[\S\s][^\/"'\\]*)/g ;
//
print ( 'Script\n ===========\n ' + js+ '\n ===========\n \n ' ) ;
var match;
//
print ( "Using Regex 1\n ---------------\n " ) ;
if ( ( match= cmtrx1.exec ( js ) ) != null )
print ( "Found C style comment:\n '" + match[ 1 ] + "'\n \n " ) ;
//
print ( "Using Regex 2\n ---------------\n " ) ;
while ( ( match= cmtrx2.exec ( js ) ) != null )
{
if ( match[ 1 ] != undefined )
{
print ( "- C style :\n '" + match[ 1 ] + "'\n " ) ;
// break;
}
if ( match[ 2 ] != undefined )
{
print ( "- C++ style :\n '" + match[ 2 ] + "'\n " ) ;
}
}
dmFyIGpzID0gJ1wKLy8gLyogQysrIGNvbW1lbnQgICovICAgICAgXFxcblwKICAgLyogQysrIGNvbW1lbnQgKGNvbnQpICovICBcblwKLyogdCAiaCAvKiBpcyIgICAgICAgICAgICAgICBcblwKIGlzIGZpcnN0IEMtc3R5bGUgLyogICAgICAgICBcblwKLy8gIGNvbW1lbnQgKi8gICAgICAgICAgICAgICBcblwKYW5kIC8qc2Vjb25kIEMtc3R5bGUqLyAgICAgICBcblwKdGhlbiAvKmxhc3QgQy1zdHlsZSovICAgICAgICBcblwKJzsKCnZhciBjbXRyeDEgPSAvXig/OlwvXC8oPzpbXlxcXXxcXFxuPykqP1xufCg/OiIoPzpcXFtcU1xzXXxbXiJcXF0pKiJ8Jyg/OlxcW1xTXHNdfFteJ1xcXSkqJ3xbXlwvIidcXF0qKSkrKFwvXCpbXipdKlwqKyg/OlteXC8qXVteKl0qXCorKSpcLykvOwoKdmFyIGNtdHJ4MiA9IC8oXC9cKlteKl0qXCorKD86W15cLypdW14qXSpcKispKlwvKXwoXC9cLyg/OlteXFxdfFxcXG4/KSo/KVxufCg/OiIoPzpcXFtcU1xzXXxbXiJcXF0pKiJ8Jyg/OlxcW1xTXHNdfFteJ1xcXSkqJ3xbXFNcc11bXlwvIidcXF0qKS9nOwoKLy8KcHJpbnQgKCdTY3JpcHRcbj09PT09PT09PT09XG4nK2pzKydcbj09PT09PT09PT09XG5cbicpOwoKdmFyIG1hdGNoOwovLwpwcmludCAoIlVzaW5nIFJlZ2V4IDFcbi0tLS0tLS0tLS0tLS0tLVxuIik7CmlmICgobWF0Y2g9Y210cngxLmV4ZWMoIGpzICkpICE9IG51bGwpCiAgICBwcmludCAoIkZvdW5kIEMgc3R5bGUgY29tbWVudDpcbiciICsgbWF0Y2hbMV0gKyAiJ1xuXG4iKTsKLy8KcHJpbnQgKCJVc2luZyBSZWdleCAyXG4tLS0tLS0tLS0tLS0tLS1cbiIpOwp3aGlsZSAoKG1hdGNoPWNtdHJ4Mi5leGVjKCBqcyApKSAhPSBudWxsKQp7CiAgIGlmIChtYXRjaFsxXSAhPSB1bmRlZmluZWQpCiAgIHsKICAgICAgICBwcmludCAoIi0gQyBzdHlsZSA6XG4nIiArIG1hdGNoWzFdICsgIidcbiIpOwogICAgICAgIC8vIGJyZWFrOwogICB9CiAgIGlmIChtYXRjaFsyXSAhPSB1bmRlZmluZWQpCiAgIHsKICAgICAgICBwcmludCAoIi0gQysrIHN0eWxlIDpcbiciICsgbWF0Y2hbMl0gKyAiJ1xuIik7CiAgIH0KfQo=