Forum Webscript.Ru

Программирование => Perl => Тема начата: ran1 от 11 Июля 2004, 06:53:48

Название: Вопросик
Отправлено: ran1 от 11 Июля 2004, 06:53:48
Пытаюсь вытащить из документа всё, что заложено между тегами PRE.

$k =~ s%
(.+?)
%%i;
print $1;

Вроде должно работать, и работали похожие конструкции, но на практике $1 ничего не содержит, хотя между тегами до фига инфы. Почему?
Название: Вопросик
Отправлено: Chs от 12 Июля 2004, 10:40:03
perldoc perlop в части Regexp Quote-Like Operators
Разницу между m// и s/// видим?
Название: Вопросик
Отправлено: Alone от 12 Июля 2004, 15:18:55
$k =~ s%
(.+?)
%%is;
Название: Вопросик
Отправлено: Billi от 12 Июля 2004, 16:28:29
$k =~/
(.+?)<\\/PRE>/i;
должно работать (тоесть у меня работает :) )
Оператор ~s///ig...
используется не для поиска текста а для замены строк обычно
а ~/// или ~m/// для поиска
Название: Вопросик
Отправлено: Phoinix от 12 Июля 2004, 18:04:34
Billi
Chs

Кажется ему поиск и не нужен:

Цитировать
Пытаюсь вытащить из документа всё, что заложено между тегами PRE.


Вопрос, не в том как он это делает (иногда требуется кое-что убрать из текста, при этом запомнить, что убрал).
А по логике Alone прав, т.к. тег
 - подразумевает вывод текста AS IS с учетом переходов на новую строку.

Если уж курить доки, то в сторону совпадения метасимвола . с другими символами, а так же модификатора /s.
Название: Вопросик
Отправлено: ran1 от 14 Июля 2004, 17:52:44
Спасибо, я забыл про перевод строчки :(
$k =~ s%
((.|\\n)+?)
%%i;
-так всё работает.