LINUX.ORG.RU

проблемы с регулярным выражением


0

0

Помогите сабж составить, нужно фильтровать все, что <script ... > .... </script> и прочее в таком духе,

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

sed -e s/\<[a-zA-Z0-9\ \"\/\.\)\(\=]*\>//g testfile

тоесть убирает все, что между < и >, а вот как сделать, чтобы вырезалось все между открывающим и закрывающим тегами, включая сами теги?

спасибо зараннее

anonymous

На sed получилось вот такое:

sed 's@<\([a-zA-Z ]\+\)>.*</\1>@@g'

Но оно работает не правильно например в случае
<a>fff</a>zzz<a>fff</a>
Потому что у sed-а жадные регулярные выражения, как их сделать не 
жадными, я не знаю. Хотя можно в середине вместо . поставить [^<], но тогда не будут работать варианты вроде <a> <b> zzz </b> </a>

А на perl все работает:
#!/usr/bin/perl

while( <> ) {
    s/<([a-zA-Z ]+)>.*?<\/\1>//g;
    print;
}

anonymous
()
Ответ на: комментарий от Lego_12239

потому что тогда с сишным кодом из лиспа работать придется, а это неочегь приятно, да и регулярные выражения выучить хочется:)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.