Может быть легче разобрать, если у вас были явные точки с запятой.
В любом случае это работает:
import re
rx = re.compile(r'.*(//(.*))$')
lines = ["// this is a comment",
"var x = 2 // and this is a comment too",
"""var url = "http://www.google.com/" // and "this" too""",
"""url += 'but // this is not a comment' // however this one is""",
"""url += 'this "is not a comment' + " and ' neither is this " // only this""",]
for line in lines:
print rx.match(line).groups()
Вывод вышеуказанного:
('// this is a comment', ' this is a comment')
('// and this is a comment too', ' and this is a comment too')
('// and "this" too', ' and "this" too')
('// however this one is', ' however this one is')
('// only this', ' only this')
Я не уверен, что вы делаете с javascript после удаления комментариев, но JSMin может помочь. В любом случае, он удаляет комментарии достаточно хорошо, и в python есть реализация .