|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : RockMover 2:5020/400 23 Apr 2000 15:19:48 To : All Subject : Re: Вопрос по регэкспам -------------------------------------------------------------------------------- Привет! Roman Karshiev wrote: > > Есть мультистрока типа > > @s=<<XXX; > 11111 > 2222222 > 33333 > XXX > > $s=links($s); > > (Кстати, это будет то же самое, что > open f,"$file"; > @s=<f>; > close f; > $s=links($s); > или нет?) > > Hужно все фрагменты типа > #l > #i xxxx > xxxx > #i yyyy > yyyy > #i zzzz > #/l > > Заменить на > <ul> > <li><b>xxxx > xxxx</b> > <li><b>yyyy > yyyy</b> > <li><b>zzzz</b> > </ul> > > Для однострочных #i всё понятно: > > s/#l/<ul>\n/g; > s/#ib (.*)/<li><b>$1</b>\n/g; > /#\/l\<\/ul>\n/g; > > А вот как сделать, чтобы внутри <b>...</b> входил конец строки и все строки > до следующего # в начале строки? > Всякие игры с \s ^ и т.п. у меня не выходят... Во-первых, почитай повнимательней документацию, если она у тебя есть, там ты узнаешь, что @s и $s ничего общего не имеют, кроме имени, и что для использования ^ не в начале регэкспа нужен модификатор m. Во-вторых, если в файле больше ничего (кроме указанного тобой) нет, просто напиши while(<>) { chomp; $_ .= "</b>\n" unless /^#/; s/#l/<ul>\n/; s/#i(.*)/<li><b>$1\n/; s/#\/l\<\/ul>\n/g; print; } WBR, RockMover I am The Master of Flame... --- ifmail v.2.15dev4 * Origin: Azeroth delenda est! (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/28731960797d.html, оценка из 5, голосов 10
|