【问题标题】:regular expressions - same for all languages?正则表达式 - 所有语言都一样?
【发布时间】:2010-12-30 17:00:57
【问题描述】:

语言之间的正则表达式是否相同?

例如。如果我想在 javascript 中使用它,我是否必须专门为 javascript 搜索 regexp。因为我有一些备忘单。它只是说正则表达式。

我想知道我是否可以在所有语言、php、javascript 等上使用它。

【问题讨论】:

    标签: php javascript regex


    【解决方案1】:

    您可能想从查看here 开始。当我进行正则表达式时,这就是我的圣经!

    现在,正则表达式在任何地方都应该是相同的,至少在基础方面是相同的,但是在某些情况下,它会因编译器而异(或解释器,如果你愿意的话)。

    这些可能是您搜索特定模式的方式,我们以\w 为例,即:c# 中的any alphanumeric or underscore character,但 javascript 中的模式可能不同。

    当您遇到这样的特殊情况时,您可能需要修改上面提供的链接。

    【讨论】:

    • 为澄清起见,\w 在任何 Regex 解释器中都会找到一个单词 character(字母数字和下划线字符),而不是整个单词。
    【解决方案2】:

    正则表达式最大的变化之一是特殊字符的转义/解释方式。

    例如,grep、vim 和 perl 正则表达式的不同之处在于如何处理诸如 () 之类的事情,以便在搜索和替换中对模式进行分组/捕获以进行反向引用。 IIRC,Perl 直接使用它们,而 grep 和 vim 要求它们被转义。

    此外,Perl 正则表达式可能支持比早期正则表达式引擎更多的功能。在 Perl 中本来很简单的正则表达式在 grep 中是一个主要的 Pita。

    我不完全确定这是否是一种正确的总结方式,但基本上有两大类正则表达式 - Posix(grep 和类似工具)和 Perl 兼容(有细微的变化)。

    我发现一个有用的工具是The Regex Coach - interactive regular expressions

    【讨论】:

      【解决方案3】:

      基本原理大体相同,但支持该语言的引擎之间存在一些差异,PHP 和 JavaScript 不同,因为 PHP 使用 PCRE(Perl 兼容正则表达式)。

      PHP 还具有与 POSIX 兼容的正则表达式引擎(ereg_* 函数),但已弃用。

      如果你还没有使用它,我建议你试试RegexBuddy。它可以在多个 Regex 引擎之间进行转换。

      你可以找到alternatives for RegexBuddy on Mac here

      【讨论】:

      • 但我猜那个只适用于Windows?我在 Mac 上
      【解决方案4】:

      正则表达式语法在语言之间略有不同,但大部分细节是相同的。一些正则表达式实现在处理方式以及某些特殊字符序列的含义方面支持略有不同的变化。

      Google 是您最好的朋友。用您选择的语言搜索正则表达式。

      【讨论】:

        猜你喜欢
        • 2013-11-01
        • 2014-09-11
        • 2013-11-18
        • 2011-01-31
        • 1970-01-01
        • 2013-04-27
        • 2016-12-02
        • 2019-07-15
        • 1970-01-01
        相关资源
        最近更新 更多