- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将一些 excel 公式转换到另一个系统,需要进行一些相当巧妙的搜索和替换魔术。我认为 Regex 是在这种情况下完成这项工作的工具,但如果有人有任何其他想法,我想听听他们的意见。
我正在努力将这些公式转化为类似于 SQL 语法的东西。我还必须处理代数符号,所以我可能有以下内容:
9^2 需要变成 POWER(9,2)。(A + 3)^3 需要变成 POWER((A+3),3)。
最好的方法是什么?
如果有不同,我正在使用 C# 3.5。
编辑:我必须解析的示例(电源符号接近尾部):
"((({VAL(9286)} / 1000) * {VAL(4648)}) + (({VAL(9609)} / 1000) + ({VAL(6480)} / 1000)) * {VAL(8574)}) / ({VAL(9286)} / 1000 + {VAL(9609)} / 1000 + {VAL(6480)} / 1000) * (({VAL(9286)} / 22.4)*34.38 + {VAL(9609)} + {VAL(6480)}) * ((1.075068 + 0.001*11.17019 * ((({VAL(9286)} / 1000) * {VAL(4648)}) + (({VAL(9609)} / 1000) + ({VAL(6480)} / 1000)) * {VAL(8574)}) / ({VAL(9286)} / 1000 + {VAL(9609)} / 1000 + {VAL(6480)} / 1000)+273.15)) + (100000*0.90755 / ((({VAL(9286)} / 1000) * {VAL(4648)}) + (({VAL(9609)} / 1000) + ({VAL(6480)} / 1000)) * {VAL(8574)}) / ({VAL(9286)} / 1000 + {VAL(9609)} / 1000 + {VAL(6480)} / 1000) + 273.15)^2))*4.1868/32)"
最佳答案
由于嵌套括号的可能性,正则表达式不是完成此任务的合适工具。最好使用数学表达式解析器。
但这并非不可能。例如,通过反复替换模式
((?=[\w.(])[\w.]*\s*(?:\((?>[^()]+|\((?<O1>)|\)(?<-O1>))*(?(O1)(?!))\))?)\s*\^\s*((?=[\w.(])[\w.]*\s*(?:\((?>[^()]+|\((?<O2>)|\)(?<-O2>))*(?(O2)(?!))\))?)
与
"POWER($1,$2)"
直到字符串不发生变化,应该可以转所有a^b
进入POWER(a,b)
.示例:
(a+3)^(b+5^(c+3)) + 9 ^ 2 + (A + 3)^3 + (5^7)^(6^(8^9-1)-3)
-> POWER((a+3),(b+5^(c+3))) + POWER(9 ,2 )+ POWER((A + 3),3 )+ POWER((5^7),(6^(8^9-1)-3))
-> POWER((a+3),(b+POWER(5,(c+3)))) + POWER(9 ,2 )+ POWER((A + 3),3 )+ POWER((POWER(5,7)),(POWER(6,(8^9-1))-3))
-> POWER((a+3),(b+POWER(5,(c+3)))) + POWER(9 ,2 )+ POWER((A + 3),3 )+ POWER((POWER(5,7)),(POWER(6,(POWER(8,9)-1))-3))
-> done
请注意,此正则表达式将采用 ^
是左结合而不是右结合。
1^2^3
-> POWER(1,2)^3
-> POWER(POWER(1,2),3)
-> done
虽然 1^2^3 本身不是良构的。
关于c# - 查找并替换方程式(正则表达式?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3386812/
我想弄清楚如何将一周内的所有工作时间相加。 “hours”代表一周工作的小时数,“hoursDay”代表一天的工作小时数。唯一的问题是弄清楚如何在它们都由相同的名称表示时将它们全部添加。下面是我的代码
我正在尝试制定一个方程式,根据每 XX 时间的新用户及其推荐用户的输入来确定给定时间的用户数量。 基本上,我们希望每周向系统手动添加 100 个用户。我们假设每个新用户在接下来的每个星期都会再推荐一个
我正在尝试提出一个评级算法 - 所以它会做的是,从用户拥有的一组关键字(用于 SEO)中,为每个关键字提供 1-10 之间的评级(10 是最好的机会来自该集合)- 将通过比较关键字具有的“搜索量”与“
我正在尝试打开队列中的所有弹出窗口,以便它们根据队列数组中的项目数量具有不同的大小和位置。当弹出窗口启动时,想法是它们将完全填满用户屏幕(使用 screen.width 和 screen.height
我已经从一组数据创建了一个 Canvas 饼图,我现在试图定位鼠标相对于饼图的位置,以检测悬停在哪个数据部分。我快到了,但我被一个等式困住了。 我的逻辑运行良好,所以我认为这更像是一道数学题,但我会看
我正在编写一个 python 库来求解各种物理方程,并想为每个方程添加一个方法来显示 LaTeX 格式的方程。我考虑过使用 LaTeX 到 PNG 转换器,然后以某种方式显示与终端内联的图像,这导致我
我的值(value)观是: 0.263 0 0.265 0 0.267 0 0.269 0.0001 0.271 0.0003 0.273 0.0006 0.275 0.0011 0.277 0.00
我的代码在 JavaDoc 注释中通常有很多方程式。我目前正在使用 MathML 来显示这些方程式,因为这是我能够获得可以在 Eclipse 的悬停工具提示中显示的方程式的唯一方法。 我实际上并不关心
是否可以从特定网站导出文本、图像和 LaTeX 方程式,以便您可以直接自定义您自己的 PDF 而不会模糊对象?只有图像具有固定分辨率。 我知道有几种间接生成 PDF 的方法。试图在 Riemann Z
对于我的 C 程序,用户输入“aY + b = c”,其中 a、b 和 c 是 int 值,Y 是“符号常量”。 如何使“aY+b=c”与“aY + b = C”一样有效?基本上,我不确定如何利用 s
我正在根据数据集计算线性回归。我不知道编译时的回归模型或参数数量。 我将回归方程作为字符串存储在 SQL Server 2005 数据库中 y = 3x^2 + 2x // just an examp
我是一名优秀的程序员,十分优秀!