Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Регулярные выражения > удаленеи с условием


Автор: gcc 29.8.2010, 09:16
есть регулярное выражение

Код

$text =~ s/<!-- .*? -->//gsxie;


удаление комментариев...

как сделать, чтобы если между этими тегами <!--  --> попадается слово img (ссылка картинки), то чтобы данный комментарйи не удалялся... ?

нашел аналоги, похожии:
http://www.sql.ru/Forum/actualthread.aspx?bid=18&tid=552185&hl=

но сделать никак не получается именно это 

Код

$text =~ s/<!-- (?!*.img.*).*? -->//gsxie;

не работает и не хочет удалять, все кроме, где img...


Автор: dva300 29.8.2010, 10:22
боюсь что http://perldoc.perl.org/perlre.html
Цитата

The stability of these extensions varies widely. Some have been part of the core language for many years. Others are experimental and may change without warning or be completely removed. Check the documentation on an individual feature to verify its current status.


конструкция 
Цитата

s/<!--.*?(?=img).*?-->//gi;    

работает

конструкция
Цитата

s/<!--.*?(?!img).*?-->//gi;    

не работает

спасаюсь 
Цитата

s/<!--.*?-->//gi if ($_ !~/<!--.*?img.*?-->/gi);

Автор: Logo 7.9.2010, 22:22
То, что вы хотите сказать, записывается так:
Код

/<!--(?:(?!img).)*?-->/

Желательно еще указать \b

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)