Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Регулярные выражения > поиск в нескольких строках.


Автор: Trewsa 13.3.2013, 12:13
Здравствуйте. Подскажите пожалуйста, как можно составить рег. выражение, которое проверяет в разных строках. 
Есть файл с содержимым вида:

Код

#in: data01
#words
#words
#out: data02

#in: data03
#words
#words
#out: data04

#in: data05
#words
#words
#out: data06


И вывести  data01:data02, data03:data04.
Я застрял на этом, просто не пойму как можно проверить следующую строку. 
Код

qr/in:\s+(data\w+)/g

 
С уважением.

Автор: DurRandir 13.3.2013, 13:24
while ($data =~ /in: (\w+).*?out: (\w+)/sg){
    print "$1:$2\n";
}

Автор: Trewsa 13.3.2013, 13:46
Цитата(DurRandir @ 13.3.2013,  13:24)
while ($data =~ /in: (\w+).*?out: (\w+)/sg){
    print "$1:$2\n";
}

Спасибо большое! Но как можно загрузить весь файл в переменную? Ведь $data=<SOMEFILE> присваивает только первую строку. Можно ли тогда сначала в массив, потом массив в переменную.
И как можно в цикле  можно перейти к следующей строке

Код


while(<SOMEFILE>)   {
          print;
}


Автор: DurRandir 13.3.2013, 15:38
use File::Slurp, Luke

PS: это если файл маленький (по сравнению с RAM). Если большой - то надо читать построчно, ну и запоминать состояние.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)