跨语言的RegEx标准

Ice*_*ind 13 regex

我问这个问题是因为我注意到不同语言之间RegEx的语法略有不同.我想知道是否有一个RegEx标准在某处维护?如果是这样,我在哪里可以找到这份文件.另外,如果我在.NET中创建一个RegEx表达式,那么相同的表达式是否保证100%兼容并且可以与其他语言一起使用,例如Perl或Javascript或Java?最后,在使用RegEx时是否有任何"最佳实践",这有助于使其在其他平台语言中更易于维护?

Jon*_*ler 13

其中最古老的集规范化的正则表达式的是POSIX BRE(基本正则表达式)和ERE(扩展正则表达式),记录下的正则表达式.

其他语言可以定义自己的标准.例如,C++ 2011具有第28节中定义的正则表达式库(约46页标准). Perl定义了它的正则表达式.其他语言借鉴这些来源和其他语言.Lex和Flex使用他们自己的正则表达式.Sed在正则表达式上使用自己的变体.Java,JavaScript和...定义了自己的版本,有时使用PCRE(Perl兼容的正则表达式)作为其设计的基础.一些细节受到使用正则表达式的语言提供的功能的影响.

杰夫弗里德尔的着作" 掌握正则表达式"涵盖了许多不同的正则表达式,确定了哪些是常见的,哪些是不同的.

  • 杰夫弗里德的书+1.另请查看http://en.wikipedia.org/wiki/Comparison_of_regular_expression_engines进行比较.出于大多数实际目的,我希望您的.Net,Java和Perl正则表达式兼容.如果你的正则表达式很复杂,你可能会遇到问题(比如递归). (3认同)
  • 投票支持您参考弗里德尔的书。 (2认同)