小数:使用前导零(0.4),小于1的P值设置为没有前导零(P = .05)
<?php
// Leading zero for decimals
$match='
.5
p=.5
a= 67
687.689
.90 the decimal digit is
.56 ';
if (preg_match('/([a-zA-Z\s]+)?(?<!p=)(?<!\d)(\.(\d{1,}))/',$match))
{
$replacement = '$1 0$2';
$replac = preg_replace('/([a-z A-Z\s]+)?(?<!p=)(?<!\d)(\.(\d{1,}))/', $replacement, $match);
echo $replac;
}
else
echo $match;
?>
输入:
.5
p=.5
a=.67
687.689
.90
the decimal digit is .56
输出:
0.5 p=.5 a= 0.67 687.689 0.90 the decimal digit is 0.56
输出正确,但如果我在p = .5
附近的输入中插入空格,输出将如下所示:
0.5 p = 0.5 a= 0.67 687.689 0.90 the decimal digit is 0.56
不应为p = .5
添加零我该如何解决这个问题?
答案 0 :(得分:0)
很简单,更改小数的计数如下:
/([^p]\s+[=]+\s+)(\.\d{1,})/
编辑: 现在很清楚你想要什么,这个新字符串接受这个输入:
a = .1 p = .5
并给你:
a = 0.1 p = .5
答案 1 :(得分:0)
我终于找到了我的问题的答案。它可能不是一个更好的,但它给出了预期的结果。
if (preg_match('/([a-zA-Z\s]+)?(?<!p\s=\s)(?<!p=\s)(?<!p\s=)(?<!p=)(?<!\d)(\.(\d{1,}))/', $match))
{
...
}
输入:
p = .5 a = .5
输出:
p = .5 a = 0.5