[mdk-re] Re: [mdk-re] офтопик - регулярные выражения

Anton Farygin =?iso-8859-1?q?rider_=CE=C1_altlinux=2Eru?=
Пт Май 25 16:08:01 MSD 2001


cornet wrote:

> Mikhail Zabaluev wrote:
> 
>>Hello Sergey,
>>
>>On Sat, May 19, 2001 at 04:38:50AM +0400, Sergey Degtyaryov wrote:
>>
>>>On Sat, 19 May 2001 03:10:07 +0400
>>>Mikhail Zabaluev <mhz на alt-linux.org> wrote:
>>>
>>>
>>>>>Задача:
>>>>>Перловый скрипт.
>>>>>Есть одна длинная строка вынутая из файла html, сваленная в переменную:
>>>>>
>>>>><li><font size=+1><a
>>>>>href=\"./CombatSystem/Drop_sequence.html">Последовательность действий
>>>>>перед боем.</a> Updated 9:05:2001</font></li>
>>>>>
>>>>>./CombatSystem/Drop_sequence.html
>>>>>Последовательность действий перед боем.
>>>>>9:05:2001
>>>>>
>>>Именно данная строка (и подобные ей) разбирается так:
>>>#$text = '<li><font size=+1><a href="Линк">Название</a>Дата</font></li>';
>>>$text  =~ /<a href=(.*?)>(.*?)<\/a>(.*?)<\/font>/;
>>>print "$1, $2, $3\n";
>>>Хотя лучше конечно посмотреть в сторону HTML::Parser
>>>
>>>
>>>>Нужно читать про модификаторы 'm' и 's' для перловых регулярных
>>>>выражений. Можно заработать небольшой отек головы (я до сих пор не
>>>>сразу вспоминаю, какой из них что дает),
>>>>
>>>m - поиск, s - замена =)
>>>
>>Нет, нет, я про модификаторы сзади. В приведенном примере нужно
>>добавить 's' позади pattern'а, чтобы '.*?' захватывали символы перевода строки.
>>
>>P.S. HTML::Parser действительно рулит.
>>
> 
> Спасибо всем!
> Я уже с этим делом разобрался и скриптик написал, все работает :-))
> 
> вот это выдирает имя файла в переменную $1:
> $String=~/^<li>(?:<font.*>)(?:<a href=")(.*?)(?:">).*$/i
> это дескрипшен:
> $String=~/^<li>(?:<font.*>)(?:<a href=".*">)(.*?)(?:<\/a>).*$/i
> а это дату прошлого обновления:
> $String=~/^<li>(?:<font.*>)?.*Updated (.*?)(?:<\/font>)?<\/li>$/i
> 
> Еще раз всем СПАСИБО, я врубился :-))))))

А как быть в случае, если искать нужно вот в такой строке:

<li><font size=+1><a
href=
"Линк
"
 >Название</a>Дата</font></li>

???

У меня примерно такая задача и я уже сломал голову над этим. ;-(
В одной строке кончено просто... ;-(

Rgds
Rider






Подробная информация о списке рассылки community