【发布时间】:2023-03-28 02:45:01
【问题描述】:
一个给定的字符串(称为$bbb!)包含许多操作数和运算符。我想替换每次出现
muth ( math ) ^ 2 mith 到 muth sqrt( math ) mith。 (空格可以不止一个)。
编辑:
假设在整个表达式中,要么只有一个(simple linear expression) ^ 2,要么没有——如果这样更容易的话。
包容性示例:
1.2 * ( 4.7 * a * ( b - 0.02 ) ^ 2 * ( b - 0.02 + 1 ) / ( b - 0.0430 ) )
应该改为:
1.2 * ( 4.7 * a * sqrt( b - 0.02 ) * ( c - 0.02 + 1 ) / ( d - 0.0430 ) )
【问题讨论】:
-
“muth”“math”和“mith”应该是一些任意字符串吗?还是它们是固定的字符串?
-
@user3761870,要匹配平衡括号,您需要一个递归模式。在 perlre 中搜索“递归”。展示你的作品。
-
不清楚你的表达式是什么语言,但通常我希望 x ^ 2 与 sqrt(x) 不同。即 x ^ 2 = x * x 和 x ^ 0.5 = sqrt(x)。
-
@IanCook 我知道这很奇怪。在这种情况下,问题只是将
^替换为**。
标签: regex string perl replace pattern-matching