Php 预匹配括号模式

Php 预匹配括号模式,php,regex,Php,Regex,我想把字符串中的一组小数改成两个小数点。正则表达式似乎与它匹配得很好。问题在于更换 这是我的代码: $input_lines = "-33.873293252 151.201538015999972,-33.873175 151.201689183999946"; print preg_replace("/[0-9]+(\.[0-9][0-9]?)?/", "$0 $2", $input_lines); 输出我想要的小数|不想要的截断小数: 因此,我尝试将替换项更改为$0。但现在,替代品停止

我想把字符串中的一组小数改成两个小数点。正则表达式似乎与它匹配得很好。问题在于更换

这是我的代码:

$input_lines = "-33.873293252 151.201538015999972,-33.873175 151.201689183999946";

print preg_replace("/[0-9]+(\.[0-9][0-9]?)?/", "$0 $2", $input_lines);
输出我想要的小数|不想要的截断小数:

因此,我尝试将
替换项
更改为
$0
。但现在,替代品停止工作了,取而代之的是:

-33.873293252 151.201538015999972,-33.873175 151.201689183999946
如何重写正则表达式以获得所需的输出?

更好:

preg_replace("/(?<=\.\d\d)\d+/","",$input_lines);
preg\u replace(“/(?更好:

preg_replace("/(?<=\.\d\d)\d+/","",$input_lines);
preg_替换(“/(?)?
尝试此操作。替换为
$1
。请参阅演示

尝试此操作。替换为
$1
。请参阅演示


您的预期输出是什么?既然您的正则表达式包含单个捕获组,那么
$2
从何而来?我假设在
/[\s,]/
轮(数字,2)上拆分
每一个都是愚蠢的?你期望的输出是什么?既然你的正则表达式包含一个捕获组,那么
$2
从哪里来?我假设在
/[\s,]/
轮(数字,2)
上进行拆分都是愚蠢的?
([-+]?\d+(?:\.\d{2})?)(\d*)
$re = "/([-+]?\\d+(?:\\.\\d{2})?)(\\d*)/m";
$str = "-33.873293252 151.201538015999972,-33.873175 151.201689183999946";
$subst = "$1";

$result = preg_replace($re, $subst, $str);