1. Начата процедура восстановления социальных групп. Лидерам старых и новых групп обязательно ознакомиться с регламентом проведения работ.

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

Тема в разделе 'Регулярные выражения', создана пользователем TyT, 23 фев 2012.

  1. TopicStarter Overlay

    TyT

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

    Код:
    <!\-\-([\s\S](?!(\-\->)))*.\-\->
    <!--(любой символ (но не перед(-->))*любой символ-->

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

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


  2. Viodele Механик

    Administrator
    Код:
    <!\-\-[^\>\<]?\-\->
    Так не вариант?
  3. TopicStarter Overlay

    TyT

    Неа, внутри коммента < > встречаются - вордовские теги типа <w:Autor></Autor>
    я потестил свой вариант - работает, так что вопрос снимается (уже по всему файлу прошелся)
  4. На будущее: есть такое понятие как жадная и ленивая квантификация. В вашем первом примере используется жадная квантификация, потому регулярка захватывает всё от первого начала комментария, по последнего. Если использовать ленивую квантификацию - тогда она будет искать от первого начала комментария до ближайшего окончания. Чтобы применить ленивую квантификацию достаточно добавить знак вопроса после зведочки. Таким образом ваша регулярка будет иметь следующий вид:
    Код:
    <!--.*?-->
    Так же убрал экранирование дифисов, оно здесь ни к чему.
    TyT нравится это.