如何编写正则表达式从字符串中提取数值?
我有一个字符串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"