Ruby 使用正则表达式评估表达式,没有 eval

标签 ruby regex eval

抱歉,如果这是重复的。我想我应该稍微修改一下我的问题。

如何使用正则表达式计算数学表达式?不使用 eval 函数。

示例表达式:

math1 = "1+1"
math2 = "3+2-1"

我希望它能像我在示例中展示的那样处理表达式中可变数量的数字。

最佳答案

这只是个坏主意。 Regexp 不是解析器,也不是求值器。

使用语法来描述您的表达式。使用像可爱的 ruby​​ gem 这样的正式解析器解析它 Treetop .然后评估解析器生成的抽象语法树 (AST)。

天啊,树顶的 arithmetic example实际上是免费为您提供解决方案。

关于Ruby 使用正则表达式评估表达式,没有 eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15994383/

相关文章:

ruby - 将 ruby​​ String 转换为 Bignum

ruby - 使用 Ruby 查找多边形内的坐标

javascript - 正则表达式关键字匹配

javascript - JS 正则表达式 - 允许双连字符

MYSQL:正则表达式替换

javascript - 避免使用 eval() 仅使用动态字符串按名称调用函数

javascript - 用于解析 JSON 的 JavaScript eval() 替代方案

javascript - 意外的标记)node js eval 函数

ruby-on-rails - has_many 同时尊重 factory_girl 中的构建策略

Ruby Koan 151 引发异常