Как мне использовать Perl Regex для извлечения значения цифры из '[1]'? - PullRequest
4 голосов
/ 20 декабря 2010

Мой код ...

$option = "[1]";
if ($option =~ m/^\[\d\]$/) {print "Activated!"; $str=$1;}

Мне нужен способ снять квадратные скобки с опции $. $ str = $ 1 по какой-то причине не работает. Пожалуйста, сообщите.

Ответы [ 2 ]

7 голосов
/ 20 декабря 2010

Чтобы заработать 1 доллар, вам нужно записать значение в скобках, используя круглые скобки, например:

if ($option =~ m/^\[(\d)\]$/) {print "Activated!"; $str=$1;}
6 голосов
/ 20 декабря 2010
if ($option =~ m/^\[(\d)\]$/) { print "Activated!"; $str=$1; }

Или

if (my ($str) = $option =~ m/^\[(\d)\]$/) { print "Activated!" }

Или

if (my ($str) = $option =~ /(\d)/) { print "Activated!" }

.. и куча других. Вы забыли захватить ваш матч с помощью () .

EDIT:

if ($option =~ /(?<=^\[)\d(?=\]$)/p && (my $str = ${^MATCH})) { print "Activated!" }

Или

my $str;
if ($option =~ /^\[(\d)(?{$str = $^N})\]$/) { print "Activated!" }

Или

if ($option =~ /^\[(\d)\]$/ && ($str = $+)) { print "Activated!" }

Для $ {^ MATCH}, $ ^ N и $ +, perlvar .

Мне нравятся эти вопросы:)

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