【问题标题】:Is there any regular expression engine that works with multiple programming languages? [closed]是否有适用于多种编程语言的正则表达式引擎? [关闭]
【发布时间】:2013-04-17 18:40:33
【问题描述】:

由于每种编程语言似乎对正则表达式使用不同的语法,因此我正在寻找一种与所有编程语言(而不是仅其中一种或两种)兼容的正则表达式引擎。是否有适用于多种编程语言的正则表达式引擎?如果没有,创建这样一个正则表达式引擎是否可行?

【问题讨论】:

  • PCRE 用于多种语言。
  • 不同正则表达式之间的语法通常大部分是一致的。您是否遇到了特殊的极端情况?
  • 我主要是问这个问题,因为我目前正在尝试将一些 JavaScript 库移植到 Python 和 Java 中,并且我认为手动将每个 JavaScript 正则表达式转换为 JavaScript 或Python 正则表达式。我希望正则表达式语法有某种与语言无关的标准。
  • @CarlNorum,是的,除非您使用的是 emacs。
  • 或 sed。或者 MySQL(它没有像 \d 和 \w 这样的转义序列)。

标签: regex


【解决方案1】:

您的印象不正确。 “Perl-compatible regular expressions”得到广泛支持,主要是在后台使用相同的引擎。在 PHP 中,您可以通过 pcre_ 函数系列获得它们。在 python 中,它们是 re 支持的。除了传统的 SQL 语法之外,甚至 Mysql 也支持这种正则表达式样式(使用RLIKE)。不支持完整 perl 语法的语言通常支持兼容的子集。

我无法提供支持它的语言的完整列表;我不确定这个问题是否能得到回答——如果游戏环境等在他们的命令语言中嵌入正则表达式,你会计算它们吗?但这有关系吗?在感兴趣的语言中寻找正则表达式支持,如果您没有找到完整的 PCRE 支持,那么您很可能会找到一个很好的子集。

主要不兼容的正则表达式系列是 SQL 的 LIKE 语法、shell 样式的“glob”(比完整的正则表达式更简单)和各种 unix 工具,由于历史原因,这些工具坚持使用正则表达式语法的变体:grep (默认情况下所谓的“基本”正则表达式)、sed 等(请记住,grepsed 不仅早于 perl,而且早于兼容实现的文化)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 2013-11-01
    • 2012-06-22
    • 1970-01-01
    • 2012-04-14
    • 2010-09-20
    • 2012-05-20
    相关资源
    最近更新 更多