Регулярное выражение для удаления комментариев в формате 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 или более кавычками перед комментарием. Я не совсем уверен, как решить эту проблему без жесткого кодирования. Вам нужно каким-то образом разрешить четное количество кавычек.