[求助]数字匹配问题,这其中哪里错在哪里

[求助]数字匹配问题,这其中哪里错在哪里

195,220 : 66,90 (-18.30 = -28.07 + 2.87 + 6.90)
我要分别提取上面的数字,分别为195,220,66,90,-18.30,-28.07,2.87,6.90,以下是我的处理,但没成功
$num=~/(\d+)\,(\d+)\\d+)\,(\d+)\(([\-]\d+\.\d+)\=([\-]\d+\.\d+)\+([\-]\d+\.\d+)\+([\-]\d+\.\d+)\)/
请问高手,这其中哪里错在哪里?Thank you advance!!
my @t = m/(-?[\d\.]+)/g;


[Copy to clipboard] [ - ]
CODE:
$text = '195,220 : 66,90 (-18.30 = -28.07 + 2.87 + 6.90)';
@list = ($text =~ /(-?\d+\.?\d+)/g);
foreach  (@list) {
    print "\t$_\n";
}

我这样的似乎也行的,输出

[Copy to clipboard] [ - ]
CODE:
195
220
66
90
-18.30
-28.07
2.87
6.90

非常感谢wxlfh和cobrawgl二位的热心帮助!
my @t = m/(-?[\d\.]+)/g;
初学者有点看不懂,能否解释一下?


QUOTE:
原帖由 adminsinx 于 2008-12-15 10:49 发表
my @t = m/(-?[\d\.]+)/g;
初学者有点看不懂,能否解释一下?

很简单,-?表示0个或者1个-  , [\d\.]+表示一个或者多个数字或者.   ,//g表示不停匹配知道字符结束。