The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Регулярное выражение для нескольких строк"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Регулярное выражение для нескольких строк"  
Сообщение от Dmitriy email(??) on 03-Окт-06, 16:29 
Здравствуйте,

помогите разобраться с регулярными выражениями:
имеется машина отправляющая на другую машину по 169 порту UDP сообщения, эти сообщения ловит скрипт и по определённому шаблону должен отлавливать определённые сообщения (не все) но некоторые из нужных сообщений имееют длиину (я их в файл направлял и сужу по содержимому файла) на несколько строк (каждое) и скрипт их не ловит хотя по моим представлениям должен.

какие применять спец символы конца/начало строк что бы скрипт мог отлавливать многострочные сообщения?, предупрежу что с "\n" "\r" в купе c "^" и "$" у меня не заработало

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Регулярное выражение для нескольких строк"  
Сообщение от ACCA (ok) on 04-Окт-06, 10:51 
man perlre на предмет модификатора `s'. Весь файл при этом придётся засосать, как одну строку.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Регулярное выражение для нескольких строк"  
Сообщение от Dmitriy email(??) on 06-Окт-06, 18:03 
Вот скриптик

open (F1,"text.txt");
$s=<F>;
open (F2, ">out.txt");

while ($s =~ m/(\S{3}\s\d{3})\s*/g)
{
    my $inter = $1;
    print F2 $inter,"\n";
}
close F1;close F2;

а вот содержимое файлика text.txt

slovo 12345
ura 123
qwert 98765
aru 456

(текст разнесён на 4-е строки, но прочитать её нужно как одну)

поле исполнения скрипта файл out.txt остаётся пустой, чего я не так делаю?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Регулярное выражение для нескольких строк"  
Сообщение от ACCA (ok) on 08-Окт-06, 09:16 
open (F1,"text.txt");
{ local $/;
   $s=<F1>;
}
open (F2, ">out.txt");

while ($s =~ m/(\S{3}\s\d{3})\s*/g)
{
    my $inter = $1;
    print F2 $inter,"\n";
}
close F1;close F2;


man perlvar

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Регулярное выражение для нескольких строк"  
Сообщение от Dmitriy (??) on 13-Окт-06, 12:02 
Так действительно работает, но получается что после каждого знака переноса строки скрипт считает запись новой строкой, а я добиваюсь что бы одна запись занимающая две строки или например три скриптом читалась и обрабатывалась как одна строка, если на примере то это выгдядит так
Дано:
0.╜^B^A^@^D^Dtrap╓.║^F^L+^F^A^D^A./^C^C^S^H^D@^D^@^@^@^@^B^A^F^B^A^LC^A^@0..0^Y^F^M+^F^A^D^A./^C^C^S^H^A^A^D^H00BB00040
10.1.2.670^R^F^M+^F^A^D^A./^C^C^S^H^A^T^B^A^E0^Z^F^M+^F^A^D^A./^C^C^S^H^A^U^D Defailt
(это одна запись, но на одно строке она не помещается и обработать нужно ее соответственно как одну запись)
правильный ответ, после обработки регулярным выражением, должен быть записан в файл в одну строку таким видом:
00BB0004 10.1.2.67 Default


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Регулярное выражение для нескольких строк"  
Сообщение от rWizard email(??) on 15-Окт-06, 00:13 
$var = <FILEHANDLE>;

читает по уполчанию читает строку.

1.
добавьте в начало
local $/ = undef;
( man perlvar )

2.
$s = <F1>;
(у вас - <F>, который не существует )


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Регулярное выражение для нескольких строк"  
Сообщение от forfreeuse email(??) on 13-Окт-06, 12:13 
http://perl.find-info.ru/perl/015/search/2.htm

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Регулярное выражение для нескольких строк"  
Сообщение от Dmitriy (??) on 19-Окт-06, 09:44 
Спасибо всем большое, только сегодня получилось шаблоны подобрать, всё работает.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру