这是代码:
<?php
$eqn1="0.068683000000003x1+2.046124y1+-0.4153z1=0.486977512";
if(preg_match("/^[0-9]\.[0-9]{1,}x[0-9]$/",$eqn1,$vx1))
{
echo "X1 is:". $vx1[0];
echo "Match found.";
}
else
echo "Match not found.";
?>
输出: 匹配未找到。
在这里,我试图提取x1的值(即0.068683000000003)并将其存储在变量&#39; $ vx1&#39;中。它总是返回,&#34;匹配未找到。&#34;。我的代码出了什么问题?如果您发现任何错误,请提供解决方案。 感谢。
答案 0 :(得分:0)
这应该可以解决问题:
<?php
$eqn1="0.068683000000003x1+2.046124y1+-0.4153z1=0.486977512";
preg_match("/^[0-9]\.[0-9]{1,}/",$eqn1,$vx1);
print_r($vx1);
答案 1 :(得分:0)
您的正则表达式工作正常,但您必须删除^
和$
字符。您还必须在要捕获的组周围放置括号。
if(preg_match("/([0-9]\.[0-9]*)x[0-9]$/",$eqn1,$vx1))
字符^
和$
意味着捕获仅包含所附正则表达式的行。但是你的线路只包含这个数字。
如果你想以任何方式使用它们,你必须将正则表达式扩展为这样的东西:
^.*="([0-9]\.[0-9]*)x[0-9].*$
请参阅此处http://regexr.com/3diqc了解工作示例。
答案 2 :(得分:0)
<?php
$eqn1="0.068683000000003x1+2.046124y1+-0.4153z1=0.486977512";
if(preg_match("/(?<vx1>^[0-9]\.[0-9]{1,})x[0-9]/", $eqn1, $vx1)) {
echo "X1 is:". $vx1['vx1']. "\n";
echo "Match found.";**strong text**
} else {
echo "Match not found.";
}
结果
X1 is:0.068683000000003x1
Match found.array(3) {
[0]=>
string(19) "0.068683000000003x1"
["vx1"]=>
string(17) "0.068683000000003"
[1]=>
string(17) "0.068683000000003"
}
常规错误:if(preg_match(“/ ^ [0-9]。[0-9] {1,} x [0-9] $ / ”,$ eqn1,$ VX1))