在Perl中,如何从字符串中提取逗号分隔的数字列表?

时间:2017-05-18 15:14:03

标签: perl

我用逗号和空格分割字符串,以特殊字符结尾。 例如:

$str = "val=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16&";

我需要得到“1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16”。 我在perl中的代码是

$str = "val=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16&";
$str =~ /val\=(\S+)/;
print "$1\n";

但我只得到“1”。 我逗号后需要空格。

2 个答案:

答案 0 :(得分:0)

在你的模式中,你要求在等号后面的第一个非空白字符序列,以及你得到的是什么。顺便说一句,您无需在模式中转义=符号。

如果您希望&符号(&)包含在结果中,您可以使用

my (undef, $v) = split /=/, $str, 2;

如果您不满意,以下内容可能会更好地满足您的需求:

my ($v) = ($str =~ /^val = ([^&]+)/x);

答案 1 :(得分:0)

如果你需要像这样的字符串“1,2,3 ......”:

$str =~ s/[^0-9,\s]//g;
print "$str\n";

如果您需要一组数字:

my @a = $str =~ /\d+/g;