如何编写正则表达式从字符串中提取数值?

我有一个字符串str = "$ 9.0 / hr"str = "$9.0/hr" 。 在这种情况下,我只想要这个整数值为9.0

语言是Ruby 1.9.2

我用的是:

 number = str[ /\d*(?:\.\d+)?/ ] 

或者,如果小于1.0的值需要前导0,

 number = str[ /\d+(?:\.\d+)?/ ] 

如果您在字符串中可能有其他数字,并且只希望(第一个)在其前面有一个美元符号:

 number = str[ /\$\s*(\d+(?:\.\d+)?)/, 1 ] 

如果保证之后会有(必须)小数位和数字:

 number = str[ /\$\s*(\d+\.\d+)/, 1 ] 

希望您可以混合搭配其中一些解决方案,以满足您的需求。

没有正则表达式:

 str.delete("^0-9.") 

如果您的价格始终有dollars.cents格式(可能是价格),那么使用此正则表达式:

 "$ 9.0 / hr".match(/\d+\.\d+/)[0] # => 9.0 "$9.0/hr".match(/\d+\.\d+/)[0] # => 9.0 

另外你应该从Phrogz的答案中拿正则表达式。

我不知道ruby,但正则表达式应该是\d+(?:\.\d+)? 。 这也适用于"$9/hr"