Страница 1 из 1

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

Добавлено: 2010-04-02 13:05:27
Darnet
Гуру можете подсказать как мне отформатировать строку, у меня есть переменная с таким содержанием:

Код: Выделить всё

Hex-STRING: 00 1A 4D 30 FA 08 
Мне надо сделать чтобы она была в вида:

Код: Выделить всё

00:1a:4d:30:fa:08
Вот что у меня получилось:

Код: Выделить всё

s/"//g; s/\s*$//; s/ /:/g; s/(.)/\l\1/g;
Только здесь perl ругается на \1 и не убирает Hex-STRING:. Помогите кто может, а то очень нужен этот скрипт.

Re: Регулярные выражения в Perl

Добавлено: 2010-04-02 13:24:54
Гость
Что-то типа может этого:

Код: Выделить всё

my $a = "Hex-STRING: 00 1A 4D 30 FA 08";
$a =~ s/(?:[^:]+: )((?:[\dA-F]{2} ?)+)/$1/;
$a =~ tr/A-F /a-f:/;

Re: Регулярные выражения в Perl

Добавлено: 2010-04-02 20:26:22
Гость
кстати. чё-то сразу не подумал... можно же проще:

Код: Выделить всё

my $a = "Hex-STRING: 00 1A 4D 30 FA 08";
$a = substr($a, 12);
$a =~ tr/A-F /a-f:/;

Re: Регулярные выражения в Perl

Добавлено: 2010-04-06 8:57:03
Darnet
Большое спасибо все получилось.

Re: Регулярные выражения в Perl

Добавлено: 2010-04-08 13:35:08
Darnet
Помогите вот еще одной строкой, так же есть переменная с таким содержанием:

Код: Выделить всё

.106.1.172.16.112.171
и
.1.1.172.16.112.171
Как мне сделать ее такого вида

Код: Выделить всё

106
и
1

Re: Регулярные выражения в Perl

Добавлено: 2010-04-08 14:21:02
Гость
Если надо выдернуть первое число, то:

Код: Выделить всё

my $a = ".106.1.172.16.112.171";
$a =~ /(\d+)/;
и теперь в переменной $1 будет это самое число.

Re: Регулярные выражения в Perl

Добавлено: 2010-04-08 14:55:05
Darnet
Пишу вот так:

Код: Выделить всё

s/(\d+)/$1/;
Вроде все правильно, а все равно не заменяет. Где может быть ошибка?

Re: Регулярные выражения в Perl

Добавлено: 2010-04-08 15:33:14
Гость
Может можно как-то и по-другому, но вот это даёт желаемый результат:

Код: Выделить всё

s/\.(\d+).+/$1/;

Re: Регулярные выражения в Perl

Добавлено: 2010-04-08 15:42:22
Podedinov
Большое спасибо, все работает как надо.

Re: Регулярные выражения в Perl

Добавлено: 2010-06-05 1:55:22
Гость
Гость писал(а):Может можно как-то и по-другому, но вот это даёт желаемый результат:

Код: Выделить всё

s/\.(\d+).+/$1/;
не совсем коректно
так правильнее

Код: Выделить всё

s/^\.(\d+).+/$1/;