如何制作正则表达式来计算类似 5.5 + 0.5 * 56 的东西


How to make a regex to calculate something like this 5.5 + 0.5 * 56

当你在谷歌搜索中输入时,如下所示:

5.5 + 0.5  * 56

谷歌计算它

5.5 + (0.5 * 56) = 33.5

这真的很棒正则表达式模式,但我不太擅长正则表达式:(

谷歌所做的是解析数学表达式,它不使用匹配模式。

为此,您需要一个递归下降解析器:具有优先级的方程(表达式(解析器?

据我所知,正则表达式不能做这样的计算......谷歌不仅使用正则表达式来开发他的搜索引擎。要完成此类工作,您需要为自己实现一个表达式计算器。几年前,我开发了一个简单的,效果很好。在网络上有大量的例子可以做到这一点......希望它高跟鞋!

正则表达式用于根据模式搜索和操作文本。同样,并非它能识别每种模式。它只能理解基于常规语言的模式(乔姆斯基层次结构中的3型语法(。

您在此处显示的内容由数学表达式解析器完成。只需谷歌一下,你会发现很多免费提供。如果你正在使用的浏览器中有一个JavaScript控制台,只需使用eval来解析表达式。

var expression = "5.5 + 0.5  * 56";
eval( expression );
// 33.5