Удалить html комментарии регуляркой

Статус
В этой теме нельзя размещать новые ответы.

TyT

Ня!
Регистрация
19 Июн 2006
Сообщения
497
Реакции
213
Есть огромный html файлик (24мега) дримвивер на нем загибается, потому для чистки использую ultraedit... вообщем составляю регулярное выражение на удаление штмл комментариев. банальный
Код:
<!\-\-.*\-\->
не подходит потому что захватывает полезную инфу из двух комментов рядом расположеных.
Потому возникла идея проверять предварительно на наличие --> предварительно, но так как с рег выражениями дела до этого плотного не имел, с трудом представляю какбы так составить условие :) Пока что в голову пришло вот такое:

Код:
<!\-\-([\s\S](?!(\-\->)))*.\-\->

<!--(любой символ (но не перед(-->))*любой символ-->

случайно пробежался по фалу вроде без ошибочно... но пока не рискую ко всему файлу применить :)

p.s. вроде работает... по крайней мере на демо файлике ложных срабатываний нет:


Код:
<!-- ком@$%ментц //--> разная инфа низя удалить<!-- <!--! ком:+--<ментц <->-->разная инфа низя удалить <!-- ком
 
ментц <- ->-->разная инфа низя удалить <!--<a hef=""> комментц //-->разная инфа низя удалить<!-- комм        ентц //--> <!-- комм!*ентц //-->
 
 
<!-- комментц //--> разная инфа низя удалить<!-- <!--комментц <->-->разная инфа низя удалить <!-- комментц <- ->--> <!--<a
hef=""> комментц //-->разная инфа низя удалить <!-- комментц //-->разная инфа низя удалить <!-- комментц--<#& //-->
 
Код:
<!\-\-[^\>\<]?\-\->
Так не вариант?
 
Неа, внутри коммента < > встречаются - вордовские теги типа <w:Autor></Autor>
я потестил свой вариант - работает, так что вопрос снимается (уже по всему файлу прошелся)
 
На будущее: есть такое понятие как жадная и ленивая квантификация. В вашем первом примере используется жадная квантификация, потому регулярка захватывает всё от первого начала комментария, по последнего. Если использовать ленивую квантификацию - тогда она будет искать от первого начала комментария до ближайшего окончания. Чтобы применить ленивую квантификацию достаточно добавить знак вопроса после зведочки. Таким образом ваша регулярка будет иметь следующий вид:
Код:
<!--.*?-->
Так же убрал экранирование дифисов, оно здесь ни к чему.
 
  • Нравится
Реакции: TyT
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху