返回值假装我有一个代码在AWK:为字符串匹配
str_1 = "abc123defg";
match(str_1, /[0-9]+/);
num_1 = substr(str_1, RSTART, RLENGTH);
然后NUM_1将是 “123”。什么是相同任务的Perl版本?
在此先感谢。
返回值假装我有一个代码在AWK:为字符串匹配
str_1 = "abc123defg";
match(str_1, /[0-9]+/);
num_1 = substr(str_1, RSTART, RLENGTH);
然后NUM_1将是 “123”。什么是相同任务的Perl版本?
在此先感谢。
我想那意思就是:
my $num_1 = ($str_1 =~ /(\d+)/)[0];
这可能是:
$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]);
我通常会做这样的事情
my ($num_1) = $str_1 =~ /(\d+)/;
或
my $num_1;
if ($str_1 =~ /(\d+)/) {
$num_1 = $1;
}
在Perl的模式\d
相当于[0-9]
为ASCII字符串。
谢谢!所以如果我把这个字符串扩展为“abc123def456ghi789jkl”,那么[0] = 123; [1] = 456等...这是正确的吗? – GaryHull 2011-04-07 21:22:13
@gary,的确是 – 2011-04-08 01:54:50
我想你需要添加'/ g'修饰符来完成这个工作。 – 2011-04-08 19:22:35