Проблема соответствия Perl Reg ex $ trailer = ~ / 00fd00. * 00fc00 /; - PullRequest
0 голосов
/ 14 мая 2011

Я пытаюсь извлечь символы: 328c1e460b000a2020202020200000
из строки: 01e000000fd00328c1e460b000a202020202020000000fc00434f4

Я использую Perl в Windows XP и попробовал:

$trailer =~/00fd00.*00fc00/;
$trailer =~/00fd00\w+00fc00/;

например:

$trailer ="01e000000fd00328c1e460b000a202020202020000000fc00434f4";
print"Original  $trailer\n";

#$trailer =~/00fd00.*00fc00/;
$trailer =~/00fd00\w+00fc00/;

print "Final     $trailer\n";

Вывод:

Original  01e000000fd00328c1e460b000a202020202020000000fc00434f4
Final     01e000000fd00328c1e460b000a202020202020000000fc00434f4

Ответы [ 2 ]

5 голосов
/ 14 мая 2011

Вы можете сделать что-то вроде:

$trailer =~ s/.*00fd00(.*)00fc00.*/$1/;

Простое совпадение не изменит саму переменную, вам нужна замена.

4 голосов
/ 14 мая 2011

Вы можете использовать regex captures : -

my $trailer ="01e000000fd00328c1e460b000a202020202020000000fc00434f4";
my ($trailer_extract) = $trailer =~/00fd00(\w+)00fc00/;

print "Original  $trailer\n";
print "Final     $trailer_extract\n";

Это имеет преимущество перед заменами, оставляя $ трейлер без изменений, если вам все еще нужно сослаться на не извлеченную строку в другом месте вашегокод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...