使用regexp匹配Ruby中的浮动

时间:2013-12-01 15:48:02

标签: ruby regex match

我需要从Ruby中的字符串中提取浮点数,但是如果我尝试使用普通符号提取它,我当然不会获取“,”前面的数字。

"3,25 år -".match((\d+)\s?år\s?-)[1] => # "25"

有没有一种简单的方法来获取整数?

2 个答案:

答案 0 :(得分:2)

"3,25 år -".match(/([\d,]+)\s?år\s?-/)[1] => # "3,25"

请注意您的代码还有其他错误。你错过了正则表达式分隔符。它应该是

match(/.../)

match(...)

答案 1 :(得分:0)

您在正则表达式周围缺少正斜杠/

除此之外,这将返回您想要的内容:

"3,25 år -".match(/(\d+(?:,\d+)?)\s?år\s?-/)[1] => # "3,25"

作为旁注,上面将匹配正整数和浮点数。如果您确定您将始终使用浮点数,请将其简化为:

"3,25 år -".match(/(\d+,\d+)\s?år\s?-/)[1] => # "3,25"

最后,我建议你习惯使用[0-9]数字代替\d,准备why here,所以最后试试这个:

"3,25 år -".match(/([0-9]+,[0-9]+)\s?år\s?-/)[1] => # "3,25"

PS。我建议你避免使用[\d,]+解决方案,因为这个正则表达式也可以匹配非数字,例如它匹配1,,11,,1