如何使用perl正则表达式从'[1]'中提取数字值?

neb*_*lus 4 regex perl

我的代码......

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

我需要一种方法从$ option中删除方括号.$ str = $ 1由于某种原因不起作用.请指教.

Mik*_*ame 7

要获得1美元的工作,您需要使用括号捕获括号内的值,即:

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


Hug*_*eir 6

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

要么

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

要么

if (my ($str) = $option =~ /(\d)/) { print "Activated!" }
Run Code Online (Sandbox Code Playgroud)

..和其他一些人.你忘了用()的比赛捕捉你的比赛.

编辑:

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

要么

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

要么

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

对于$ {^ MATCH},$ ^ N和$ +,perlvar.

我喜欢这些问题:)