LINUX.ORG.RU

perl Text-Balanced


0

0

подскажите как можно читать строку до определенного значения и строку со значением уже не писать в буфер? к примеру у меня есть ip : ....... mac: ...... user: ..... ........ os: ..... т.е формат данных моежт быть не определено и как в строке user может быть описание еще на несколько строк нихе, поэтому решил искать до следующего двоеточия и эту строчку уже в исходный буфер(ip, mac,user,...) уже не писать. Т.е. я хочу получить отдельные значения из масива...

search->ip; search->mac; search->user; ... ну и дальше удобно работать с ними.

anonymous

подскажите как можно читать строку до определенного значения и строку со значением уже не писать в буфер?
к примеру у меня есть
ip : .......
mac: ......
user: .....
........
os: .....
т.е формат данных моежт быть не определено и как в строке user может быть описание еще на несколько строк нихе, поэтому решил искать до следующего двоеточия и эту строчку уже в исходный буфер(ip, mac,user,...) уже не писать.
Т.е. я хочу получить отдельные значения из масива...

search->ip;
search->mac;
search->user;
...
ну и дальше удобно работать с ними.

anonymous
()
Ответ на: комментарий от anonymous

$b = <<'EOL';
ip : .......
mac: ......
user: .....
........
os: .....
EOL

print "input: '$b'";
while ( $b =~ /^(\w+?\s*?):(.+?)(?=(?:^\w+?\s*?:|\Z))/gms )
{
	print "\n==='$1' '$2'===\n";
}

$ test.pl
input: 'ip : .......
mac: ......
user: .....
........
os: .....
'
==='ip ' ' .......
'===

==='mac' ' ......
'===

==='user' ' .....
........
'===

==='os' ' .....'===


c: basesed хмм... намекает ?

anonymous
()
Ответ на: комментарий от anonymous

ок, сенк, а можно еще примерчик как выхватить значение в кавычках в таких форматах...

set = str("\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");

set = str("User-Agent: Mozilla/4.0", "(compatible; MSIE 6.0; Windows NT 5.0)");

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.