首页 > 解决方案 > 用正则表达式分别计算每个数字?

问题描述

我的代码如下所示:

#!/usr/bin/perl

use strict;
use warnings;

my @list = <>;
chomp(@list);
my @matches =grep /^\d+(,\d+)*$/, @list;
if (@matches>0)
{
    print scalar @matches . "\n";
}
else {

}

输入是这样的:

sd 45
gdfg 34
fg dfg 345 df

然后它应该打印7 但它打印3 我应该如何更改正则表达式以分别计算整数?

标签: regexperlint

解决方案


要将所有数字作为单个元素捕获,您可以:

my @matches = map /([0-9])/, @list;

如果您只想捕获完全是数字的行的数字,您可以添加一个 grep:

my @matches = map /([0-9])/, grep /^[0-9]+\z/, @list;

推荐阅读