正则表达式不接受数字之间的空格

时间:2014-02-19 13:57:44

标签: ruby regex

我正在尝试解析这样的行:

0: abc 0.5
1: a 16.1,3
2: b 0.9,2.3
3: c -19.645
7:  

格式为:

Number:[space][up to 4 letters from the range ABCD][space][comma separated numbers that could be decimal and/or negative]

使用下面的ruby命令

if line=~ /^(\d*): [abcd]{0,4} ((\-?)(\d*).(\d*))*/) then
  do x
else
  do y

但是,它也会匹配以下字符串,我不希望这样,因为它们之间的数字代替" " ":"","

4: d 0.8 16.56
5: d 0.9:5.0

如何修改我的正则表达式以使其仅适用于逗号分隔符?

编辑:如果您想编辑正则表达式,Rubular链接如下:http://rubular.com/r/8Z9Eeu27i5

1 个答案:

答案 0 :(得分:3)

如果我理解正确,这个应该有效:

^\d+:\s[a-zA-Z]+\s(-?(\d+\.)?\d+,)*(-?(\d+\.)?\d+)$

编辑:

如果7:[空格] [空格]也有效,那么使用这个:

^\d+:\s[a-zA-Z]*\s(-?(\d+\.)?\d+,)*(-?(\d+\.)?\d+)?$