LINUX.ORG.RU

регулярное выражение Perl


0

0

привет. помогите

вот небольшая прога для таблицы соответствия ip/mac адресов.

my @lines = `cat test.txt`;

foreach my $line (@lines) { if ($line =~/\d+\.\d+\.\d+\.\d+\s+[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f] {2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}/) { print "\$line is passed"; } }

как сделать регулярное выражение покороче????

anonymous

$a='[0-9A-Fa-f]';

потом m/gex/

anonymous
()

Общий ответ: посмотри как сделано в http://search.cpan.org/~abigail/Regexp-Common-2.120/


Навскидку по тому же методу:

$d="\\d+";
$h="[0-9a-f]";
foreach my $line (@lines) { if ($line =~/{$d\.}{3}$d\s+($h{2}:){5}$g/i) { print "\$line is passed"; } }

Может где ошиься, но думаю понятно.

ЗЫ: там же есть правильные регексп как для IP адресса так и для MAC.

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