我看过this question,从经验中我知道每种语言似乎都支持正则表达式的不同方言。我认为这个问题已经存在了很长时间,所以一定有人想对此做些什么。

我有一个涉及JavaScript,Ruby和Java的大型项目,所有这些项目都必须使用相同的正则表达式。我们选择Java作为我们的“官方” RE解释器,这意味着,每当其他两种语言需要评估RE时,它们都必须以某种方式将其传递给Java程序,这开始增加了很多开销。

如果我可以选择任何一种RE方言并至少从所有语言中以半本地方式调用它,对我们来说将是巨大的进步。这可能吗?已经完成了吗?我们研究了PCRE,从技术上来说,可以通过Java和Ruby的 native 绑定(bind)来调用它(尽管它使JS处于冷酷状态),但是我还没有发现有人真正这样做。我们一个人吗?

ETA:我没有提到的皱纹是该系统应用了用户提供的正则表达式。 (是的,我知道这是一个security issue等,但是仅供信任的,归因于用户的内部使用。)我当然可以建议列出一个“请勿执行此操作”功能以避免使用,但是,我希望这不是最好的解决方案。

最佳答案

您在帖子中隐式提及的方言并没有太大不同,有些事物是由一种而不是其他事物支持的,但这通常不会引起任何问题,除非您编写实际上专门针对其中一种方言的正则表达式问题。

您可以在以下链接中的表中看到方言之间的差异:

  • regular-expressions.info: Compare Regular Expression Flavors


  • 它们之间的主要区别在于正则表达式的更多“高级”功能。如果您不使用这些工具,那么您将处于安全区域。

    由于python和java都有可用于执行 native javascript的模块,因此您可以说所有表达式都应为javascript编写,然后让将来的开发人员使用对他们可用的模块,以确保regexp始终以完全相同的方式运行。

    尽管我只是记录您的应用程序,说所有三种语言都需要支持使用的任何正则表达式,然后将它们定向到一个表(例如先前链接的表)中,说它们应该查找可用的东西。

    ..或者您可以填写自己的列表/表格。

    关于java - 如何在不同的编程语言中使用相同的正则表达式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8595037/

    10-13 06:32
    查看更多