我用逗号和空格分割字符串,以特殊字符结尾。 例如:
$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”。 我逗号后需要空格。
答案 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;