Регулярное выражение для удаления комментариев в формате javascript double slash (//)

Я пытаюсь удалить комментарии javascript через regex в С# и застрял. Я хочу удалить любые вхождения комментариев с двойным слэшем //.

Мое текущее регулярное выражение (?<!:)//[^\r\n]*, которое поймает все комментарии и предотвратит сопоставление http://. Однако отрицательный lookbehind был ленив и, конечно, укусил меня в следующий тестовый пример:

var XSLPath = "//" + Node;

Итак, я ищу регулярное выражение, которое выполнит lookbehind, чтобы увидеть, существует ли четное число двойных кавычек (") перед совпадением. Я не уверен, что это возможно. Или, может быть, есть лучший способ сделать это?

Ответы

Ответ 1

(Обновлено на основе комментариев)

Похоже, это работает очень хорошо:

(?<=".*".*)//.*$|(?<!".*)//.*$

Похоже, что теги в Regex Hero показывают, что они будут соответствовать комментариям так, как мне кажется (почти).

Например, он полностью игнорирует эту строку:

var XSLPath = "//" + Node;

Но он достаточно умен, чтобы соответствовать комментарию в конце этой строки:

var XSLPath = "//"; // stuff to remove

Однако он недостаточно умен, чтобы знать, как иметь дело с 3 или более кавычками перед комментарием. Я не совсем уверен, как решить эту проблему без жесткого кодирования. Вам нужно каким-то образом разрешить четное количество кавычек.