Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> анализ многострочного файла 
V
    Опции темы
shtuceron
Дата 11.10.2011, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 17.2.2008

Репутация: нет
Всего: нет



Здравствуйте, возможно ли находить заданный по шаблону текст в файле?

Я знаю, что во первых нужно считывать весь файл и анализировать его, для это я использую:
Код

undef $/;

while (<>)
{
    if ($_ =~ m%<tag>(.*?)</tag>%i)
    {
        print "$1\n";
    }
}


НО, ничего увы не выходит, как же тогда найти совпадения?
Код

<xml>
<tag>
I Want this text!
</tag>  
</xml>

PM MAIL WWW   Вверх
ginnie
Дата 11.10.2011, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



shtuceron, в регулярном выражении . не захватывает перевод строки, поэтому совпадений не получается. Для того, чтобы . захватывала перевод строки надо в регулярном выражении указать модификатор s: m%<tag>(.*?)</tag>%is


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
alezzz
Дата 11.10.2011, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 1
Всего: 14



Добавте модификатор s, у вас точка не совпадает с переходом строки. Или замените на ([^<]+)
PM MAIL   Вверх
shtuceron
Дата 11.10.2011, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 17.2.2008

Репутация: нет
Всего: нет



Спасибо!
PM MAIL WWW   Вверх
Pilat66
Дата 13.10.2011, 05:44 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 27.1.2009

Репутация: 1
Всего: 1



Не верю, что все или хотя бы один из вышеприведённых советов мог сработать. Тут же построчный анализ, какой тут 's' модификатор может быть? Разве что весь файл прочитать как одну строку и while(/.../gso){...} сделать, но с большим файлом это не прокатит.
PM MAIL   Вверх
alezzz
Дата 13.10.2011, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 1
Всего: 14



А и не нужно верить, вы сначала попробуйте. Когда будете пробовать то не забудте про undef $/;
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0597 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.