【发布时间】:2012-01-25 13:44:57
【问题描述】:
我见过this question,我从经验中知道每种语言似乎都支持不同的正则表达式方言。我想这个问题已经存在很长时间了,所以有人一定想对此做点什么。
我有一个涉及 JavaScript、Ruby 和 Java 的大型项目,所有这些项目都必须涉及相同的正则表达式。我们选择 Java 作为我们的“官方”RE 解释器,这意味着任何时候其他两种语言需要评估一个 RE,他们都必须以某种方式将其传递给 Java 程序,这开始增加很多开销。
如果我可以选择任何 RE 方言并从所有语言中至少半原生地调用它,这对我们来说将是一个巨大的进步。这可能吗?已经在做了吗?我们研究了 PCRE,技术上可以通过 Java 和 Ruby 的本机绑定调用它(尽管它使 JS 处于冷漠状态),但我还没有发现有人真正这样做。我们是一个人吗?
ETA:我没有提到的一个问题是这个系统应用了用户提供的正则表达式。 (是的,我知道这是一个security issue 等,但它是供受信任的、有归属感的用户在内部使用的。)我当然可以建议列出一个“不要这样做”的电源功能列表来避免,但我有点希望这不是最好的解决方案。
【问题讨论】:
-
啊,用户提供的正则表达式。我知道我们错过了什么;)
-
(我只是想发布我们最终使用的权宜之计,以防有人关心。不过,我仍然希望听到更好的消息。)我们选择了 Java 正则表达式。如果 Ruby 在 JRuby 中运行,我们可以从 Ruby 代码本地运行这些。就我们的目的而言,这已经足够了。我们还编写了一个 Java servlet,它基本上针对测试数据运行正则表达式,作为 RESTful 服务。这会处理 JavaScript 端,虽然它当然不漂亮:-/
标签: java javascript ruby regex pcre