我想使用正则表达式从字符串中找到特定的浮点数 串
202-715-1278 2 0.01% 0.30 0.00% $0.00 0.00%
我需要找到这个0.30的唯一数字。 我尝试了很多模式,但所有模式都返回字符串中的整个浮点数,其中一些不能正常工作
[-+]?([0-9]*\,)?[0-9]+
\d+(?:\.\d+)?
我也试过
floatval()
但它既不起作用
答案 0 :(得分:3)
答案 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
此外,如果您使用正则表达式,那么任何遇到您的代码的开发人员都必须花时间了解它 - 除非您将其记录得很好!