我正在尝试解析这样的行:
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
答案 0 :(得分:3)
如果我理解正确,这个应该有效:
^\d+:\s[a-zA-Z]+\s(-?(\d+\.)?\d+,)*(-?(\d+\.)?\d+)$
编辑:
如果7:[空格] [空格]也有效,那么使用这个:
^\d+:\s[a-zA-Z]*\s(-?(\d+\.)?\d+,)*(-?(\d+\.)?\d+)?$