Автор Тема: Чтение блока текста  (Прочитано 2967 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bess

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.time.kharkov.com
Чтение блока текста
« : 06 Декабря 2002, 07:43:25 »
Есть такая задача - поиск RE куска текста, т.е. я так хочу делать, а счас все работает построчно. Т.е. чтение текстового файла. Нужно найти текст, заключенный меж 2 управляющих слов (рубрика и статья):

рубрика:
название рубрики

статья:
текст текст текст...


т.е. что-то вроде /^рубрика:$.*^статья:$/m/g

Подскажите плиз как это ПРАВИЛЬНО сделать, чтоб быстро искать такие блоки текста?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Чтение блока текста
« Ответ #1 : 06 Декабря 2002, 11:26:33 »
Смысл такой:

$text=~/rubrika(.*)statya/g;
print $1;
The documentations is your friend

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Чтение блока текста
« Ответ #2 : 06 Декабря 2002, 14:48:00 »
bess, вместо модификатора "/m" используй "/s", а "/" между модификаторами не нужен:

print $1 if $text=~/рубрика:(.*?)статья:/s;

или, если может быть несколько совпадений:

print "$1\\n" while $text=~/рубрика:(.*?)статья:/sg;
« Последнее редактирование: 06 Декабря 2002, 14:56:58 от YA »
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн bess

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.time.kharkov.com
Чтение блока текста
« Ответ #3 : 07 Декабря 2002, 04:07:46 »
Спасибо, понял. Только почему /s если я ищу в блоке, а не в 1 строке?

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Чтение блока текста
« Ответ #4 : 07 Декабря 2002, 10:15:27 »
Цитировать
почему /s
Модификатор "/s" - разрешает "." соответствовать символам перевода строки.
Литературный перевод с русского и английского на Perl. Дорого!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28