Регулярное совпадение со всеми перед двумя косыми чертами (//), не содержащимися в кавычках

Я боролся с некоторыми негативными взглядами и шаблонами lookbehind безрезультатно. Мне нужно регулярное выражение, которое будет соответствовать всем в строке перед двумя косыми чертами, если только указанные символы не указаны в кавычках.

Например, в строке "//this is a string//"//A comment about a string about strings, подстрока "//this is a string//" должна быть сопоставлена, а остальные игнорируются. Как вы можете видеть, нужно исключить любые однострочные комментарии (C++/Java style). Заранее спасибо.

3 ответа

Как насчет

\/\/[^\"']*$

Он будет соответствовать // если за ним не следует ни " или а '. Это не совсем то, что вы просили, но близко соответствует вашим требованиям. Оно будет только подавлять комментарии, содержащие " или ', например

// I like "bread".

Может быть, лучше, чем никакого решения.


Ну вот:

^([^/"]|".+?"|/[^/"])*


Удаленное средство для комментариев на основе python/regex Я написал некоторое время назад, если это полезно:

def remcomment(line):
 for match in re.finditer('"[^"]*"|(//)', line):
 if match.group(1):
 return line[:match.start()].rstrip()
 return line

licensed under cc by-sa 3.0 with attribution.