假装我在awk中有代码:
str_1 = "abc123defg";
match(str_1, /[0-9]+/);
num_1 = substr(str_1, RSTART, RLENGTH);
然后num_1将为“123”。什么是同一任务的Perl版本?
提前致谢。
答案 0 :(得分:3)
我将其翻译为:
my $num_1 = ($str_1 =~ /(\d+)/)[0];
答案 1 :(得分:3)
我通常会做类似
的事情my ($num_1) = $str_1 =~ /(\d+)/;
或
my $num_1;
if ($str_1 =~ /(\d+)/) {
$num_1 = $1;
}
在Perl的模式中,\d
相当于ASCII字符串的[0-9]
。
答案 2 :(得分:1)
可能是:
$str="abc123defg";
$str =~ /[0-9]+/;
$num_1 = $&;
你的awk直接翻译成:
$str="abc123defg";
$str =~ /[0-9]+/;
$num_1 = substr($str, $-[0], $+[0]-$-[0]);
可以写成:
use English;
$str="abc123defg";
$str =~ /[0-9]+/;
$num_1 = substr($str, $LAST_MATCH_START[0], $LAST_MATCH_END[0]-$LAST_MATCH_START[0]);