Цитата(amg @ 23.8.2007, 12:38 ) | ... порверить содержит ли строка ip но который не начинается с 192.168. Как модернизировать вот это \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} Проверка должна осуществляться один рег. выражением объязательно. |
Условия бы поподробнее... там просто адрес или он в строке лога? Один адрес или несколько? как выводить результат?
Поэтому танцую от себя. В строке может быть сколько угодно всего, надо вытащить все ip адреса, которые не начинаются с '192.168'. Не буду напоминать, что регулярка на валидность ip выглядит хитрее, здесь всё упрощено. Результаты пишу в массив, после прогона строки (всех строк... как там это надо?) вывожу массив на экран. Регулярка изменяет исходную строку, поэтому строки надо прогонять не как есть, а их копии - либо через foreach массив строк, либо как в моём примере
Код | $str='192.169.0.1 + maybe 192.184.14.76 and 192.168.45.45'; @arr=(); ($temp = $str) =~ s/((\d{1,3}\.\d{1,3})\.\d{1,3}\.\d{1,3})/push(@arr,$1) if $2 ne '192.168'/eg; print join\"\n\",@arr;"
|
Цитата(вывод) | 192.169.0.1 192.184.14.76
|
|