代码之家  ›  专栏  ›  技术社区  ›  Scott

编写正则表达式的语法是否标准化?

  •  3
  • Scott  · 技术社区  · 16 年前

    编写正则表达式的语法是否标准化?也就是说,如果我在C++中编写正则表达式,它将在Python或JavaScript中工作而不进行任何修改。

    3 回复  |  直到 16 年前
        1
  •  8
  •   Oddthinking    16 年前

    不,正则表达式有几种方言。

    它们通常有许多共同的元素。

    列出并比较了一些流行的 here .

        2
  •  0
  •   Pointy    16 年前

    简单的正则表达式,大多数是。但是,在编程语言的各个方面,都存在差异。

        3
  •  0
  •   Amarghosh    16 年前

    不,这里有一些不同之处:

    • javascript允许您编写内联regex(其中 \ 在里面 \s 不需要作为 \\s ,由 / 性格。关闭后可以指定标志 / . JS也有 RegExp 将转义字符串作为第一个参数,将可选标志字符串作为第二个参数的构造函数。

      /^\w+$/i 和 new RegExp("^\\w+$", "i") 有效且相同。

    • 在PHP中,可以将regex字符串括在所选的任意分隔符内(但不确定可以用作分隔符的超级字符集)。你应该再次避开这里的反斜杠。

      "|[0-9]+|" 一样 #[0-9]+#

    • python和c支持原始字符串(不限于regex,但对于编写regex非常有用),这些字符串允许您在regex中编写无转义反斜杠。

      "\\d+\\s+\\w+" 可以写为 r'\d+\s+\w+' 在蟒蛇和 @'\d+\s+\w+' 在C中#

    • 类定界符 \< , \A ETC不受全球支持。

    • javascript不支持lookback和 DOTALL 旗帜。