使用数学公式中的正则表达式来发现变量和函数

时间:2015-04-22 16:02:58

标签: regex parsing math

我想在 vanilla JS中的任何数学公式中获取函数数组和变量数组/ strong>:

样本:

1+3*9/cos(4+2*x/6+pol)+
BDLIRE(longueur2)+2*8+sin(2)
+g()

获取我使用的功能:/([a-zA-Z]+)(?=[(])/gm https://regex101.com/r/fT3iM7/1

为了获得我试过的变种:/([a-zA-Z]+[a-zA-Z0-9]?)(?!\()/gm https://regex101.com/r/mG2fQ2/1

但是你可以看到它忽略了匹配的最后一个字符,后跟一个(字符 所以我对我的正则表达式有点困惑以匹配变量。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

你不能使用RegEx来解析算术表达式,也许你可以,但是你会有一个不稳定的实现并写它会让你疯狂。

你需要研究解析器。查看PEG.js,它是一个易于使用的框架,用于编写编译成JS的解析器,因此它是“vanilla”(无论你的意思是什么......):

http://pegjs.org/