考虑以下字符串:
'“z”:“100”,“a”:“+ 0.5”,“b”:“ - 0.578”,“c”:“ - 。5”,“d”:“。55”,“ E “:” - 5" , “f”:“01234”,“g”:“0.999”,“i”:“153.35”'
我正在尝试转换此字符串中的每个数字,同时保留负号,除了以0开头的那些不浮点。换句话说,我正在尝试转换为
'“z”:100,“a”:0.5,“b”: - 0.578,“c”: - 。5,“d”:。55,“e”: - 5,“f”:“ 01234“,”g“:0.999,”i“:153.35'
这是我到目前为止所拥有的
preg_replace('/((?:\:")(?:[\+])?[\-]?([0-9\.]+?)[0-9]+(?:"))/', '$1', $string);
这还不够..困难的部分是保持 围绕 01234 ,同时为其他数字删除它们。
基本上我想忽略
(\:"[0][0-9]+")
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以使用正则表达式(:)"(?!0\d+")\+?(-?(?:\d*\.)?\d+)"
并将其替换为$1$2
。
请参阅ideone
$str = '"z":"100", "a":"+0.5", "b":"-0.578", "c":"-.5", "d":".55", "e":"-5", "f":"01234", "g":"0.999", "i":"153.35", "0":"5"';
$pattern = '/(:)"(?!0\d+")\+?(-?(?:\d*\.)?\d+)"/';
print(preg_replace($pattern, '$1$2', $str));