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

时间:2010-03-10 13:54:01

标签: regex

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

3 个答案:

答案 0 :(得分:8)

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

它们通常有许多共同点。

列出并比较了一些受欢迎的here

答案 1 :(得分:0)

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

答案 2 :(得分:0)

不,这是我想到的一些差异:

  • JavaScript允许您编写内联正则表达式(\中的\s不需要转义为\\s),由/字符分隔。您可以在结束/后指定标志。 JS还有RegExp构造函数,它将转义字符串作为第一个参数,将可选标志字符串作为第二个参数。

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

  • 在PHP中,您可以将正则表达式字符串括在您选择的任意分隔符内(不确定可以用作分隔符的超级字符集)。你应该再次逃避反斜杠。

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

  • 相同
  • Python和C#支持原始字符串(不限于正则表达式,但对编写正则表达式非常有帮助),可以让你在正则表达式中写入未转义的反斜杠。

    "\\d+\\s+\\w+"可以在Python中编写为r'\d+\s+\w+',在C#中编写为@'\d+\s+\w+'

  • \<\A等分隔符不受全球支持。

  • JavaScript不支持lookbehind和DOTALL标记。