Forum Webscript.Ru
Программирование => Perl => Тема начата: bess от 06 Декабря 2002, 07:43:25
-
Есть такая задача - поиск RE куска текста, т.е. я так хочу делать, а счас все работает построчно. Т.е. чтение текстового файла. Нужно найти текст, заключенный меж 2 управляющих слов (рубрика и статья):
рубрика:
название рубрики
статья:
текст текст текст...
т.е. что-то вроде /^рубрика:$.*^статья:$/m/g
Подскажите плиз как это ПРАВИЛЬНО сделать, чтоб быстро искать такие блоки текста?
-
Смысл такой:
$text=~/rubrika(.*)statya/g;
print $1;
-
bess, вместо модификатора "/m" используй "/s", а "/" между модификаторами не нужен:
print $1 if $text=~/рубрика:(.*?)статья:/s;
или, если может быть несколько совпадений:
print "$1\\n" while $text=~/рубрика:(.*?)статья:/sg;
-
Спасибо, понял. Только почему /s если я ищу в блоке, а не в 1 строке?
-
почему /s
Модификатор "/s" - разрешает "." соответствовать символам перевода строки.