gpt4 book ai didi

php - 如何操作字符串以便在数学表达式中显式显示隐式乘法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:59:09 25 4
gpt4 key购买 nike

我想操纵像“...4+3(4-2)-...”这样的字符串变成“...4+3*(4-2)-...”,但它当然应该识别任何数字,d,然后是'('并将其更改为'd*('。我还想将')('更改为')*('如果可能,同时进行。如果有可能添加对 pi 或 e 等常量的支持,那就太好了。

现在,我只是用这种愚蠢的方式来做:

private function make_implicit_multiplication_explicit($string)
{
$i=1;
if(strlen($string)>1)
{
while(($i=strpos($string,"(",$i))!==false)
{
if(strpos("0123456789",substr($string,$i-1,1)))
{
$string=substr_replace($string,"*(",$i,1);
$i++;
}
$i++;
}

$string=str_replace(")(",")*(",$string);
}
return $string;
}

但我相信使用 preg_replace 或其他一些正则表达式函数可以做得更好?但是我认为那些手册真的很难掌握。

最佳答案

让我们从您要查找的内容开始:

  • 以下任一项:((a|b) 将匹配 ab)
    • 任何数字,\d
    • 字符):\)
  • 后跟 (: \(

它创建了这个模式:(\d|\))\(。但是由于你想修改字符串并保留这两个部分,你可以将 \( 这导致 (\() 更难阅读但更好处理。

现在剩下的就是告诉如何重新排列,很简单:\\1*\\2,留给你这样的代码

$regex = "/(\d|\))(\()/";
$replace = "\\1*\\2";
$new = preg_replace($regex, $replace, $test);

要查看该模式实际上匹配所有情况,请参阅 this example .

关于php - 如何操作字符串以便在数学表达式中显式显示隐式乘法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24501213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com