在字符串中查找特定的浮点数?

时间:2013-06-29 01:39:32

标签: php regex

我想使用正则表达式从字符串中找到特定的浮点数 串

202-715-1278 2 0.01% 0.30 0.00% $0.00 0.00%

我需要找到这个0.30的唯一数字。 我尝试了很多模式,但所有模式都返回字符串中的整个浮点数,其中一些不能正常工作

[-+]?([0-9]*\,)?[0-9]+
\d+(?:\.\d+)?

我也试过

floatval()

但它既不起作用

3 个答案:

答案 0 :(得分:3)

试试这个:

(?<!\$)\b[-+]?\d+\.\d+\b(?!%)

它匹配一个带小数点的数字,但前面没有$或后跟%

请参阅RegExr

答案 1 :(得分:1)

你可以用空格包围一个数字(如果你正在寻找它):

(?:^|\s)\K\d+(?:\.\d+)?(?=\s|$)

说明:

(?:^|\s)   # the begining of the string or a white character
\K         # reset all that is matched before
\d+        # digit one or more times
(?:\.\d+)? # optional dot and digits
(?=\s|$)   # followed by a white character or the end of the string

答案 2 :(得分:0)

如果字符串格式是静态的(例如,它没有改变),那么为什么要使用正则表达式来找到它呢?

您可以轻松找到您要查找的字符串组件,方法是基于空格并轻松地扩展字符串:

$string = "202-715-1278 2 0.01% 0.30 0.00% $0.00 0.00%";
$parts = explode(' ', $string);
echo $parts[3]; // 0.30

此外,如果您使用正则表达式,那么任何遇到您的代码的开发人员都必须花时间了解它 - 除非您将其记录得很好!