我正在尝试将字符串中的一串小数更改为两个小数点。正则表达式似乎很好地匹配它。问题在于替换。
这是我的代码:
$input_lines = "-33.873293252 151.201538015999972,-33.873175 151.201689183999946";
print preg_replace("/[0-9]+(\.[0-9][0-9]?)?/", "$0 $2", $input_lines);
哪个输出十进制我想要 | 我不想要的截断小数:
-33.87 3293252 151.20 1538015999972 ,-33.87 3175 151.20 1689183999946
所以我尝试将replacement
更改为$0
。但现在替换停止了工作,而是给了我:
-33.873293252 151.201538015999972,-33.873175 151.201689183999946
如何重写我的正则表达式,以便为我提供所需的输出?
答案 0 :(得分:3)
更好:
preg_replace("/(?<=\.\d\d)\d+/","",$input_lines);
在没有任何内容的情况下替换前两个后面的所有尾随小数。
答案 1 :(得分:1)
([-+]?\d+(?:\.\d{2})?)(\d*)
试试这个。$1
。见。演示。
https://regex101.com/r/vD5iH9/46
$re = "/([-+]?\\d+(?:\\.\\d{2})?)(\\d*)/m";
$str = "-33.873293252 151.201538015999972,-33.873175 151.201689183999946";
$subst = "$1";
$result = preg_replace($re, $subst, $str);