【发布时间】:2011-06-06 09:38:48
【问题描述】:
网络上是否有 Regex 实现的列表,显示它们的区别/相似之处?
例如,Emacs elisp 正则表达式不同于 JavaScript 或 Perl 正则表达式,更不用说不同编辑器软件使用的所有不同实现,
例如VS2010 使用{} 而不是() 来对反向引用的表达式进行分组。
曾几何时,我可以依靠 O'Reilly 的 Regex Pocket Quick Reference 中的 Regex 转换列表,但在线的东西会更容易、更完整。
顺便说一句,我知道(当然)http://www.regular-expressions.info/ 这很好,但还远未完成。
我将根据此处发布的答案以及我能找到的任何其他内容编制一份清单。
变化
一般变化
实现上的差异通常是特殊字符{}()[]^$ 的处理方式(转义规则等),偶尔会被替换; POSIX 字符类的处理/可用性,例如[:digit:],以及选项的使用,例如gi等
(正在进行中,如果您知道任何警告,这些实现的差异,请将它们添加为答案)
- ActionScript - 使用 ECMA 样式
- Delphi (.Net) - 使用 .Net 样式。 Delphi Win32 没有本机正则表达式,但 PCRE 包装器可用。
- Emacs/ELisp - 有 2 个不同的上下文,在 elisp 中转义使用
\\,在regexp-replace中使用\。特殊字符(){}[]在用于正则表达式功能时会被转义,很像sed。 - Eclipse - 搜索使用 Java 风格的正则表达式。
- GNU (Linux) - POSIX BRE / ERE
- Grep - POSIX BRE / ERE
- Groovy - 使用 Java 风格。
- IntelliJ
- Java - Java 风格。
- JavaScript - 使用 ECMA 样式。
- NetBeans
- .NET - 使用 System.Text.RegularExpressions 中的类
- 记事本++ - PCRE
- PCRE (C/C++) - 开源库,被许多第三方语言和应用程序使用。 (例如 PHP、TCL、R 等)
- Perl - Perl 风格
- PHP - POSIX ERE,PCRE,(PHP5 的多字节字符串模块使用 Oniguruma)
- POSIX - BRE(基本正则表达式)、ERE(扩展正则表达式)
- PowerShell - .Net 风格
- Python - Python 风格
- R - POSIX ERE/BRE、PCRE
- REALbasic - PCRE
- 红宝石 - Oniguruma
- Sed - 特殊字符
(){}[]在用于正则表达式功能时会被转义。 - Tcl - 三种风格,Tcl ARE(高级正则表达式)、POSIX ERE、POSIX BRE。
- TextMate - Oniguruma
- Tera 术语 - Oniguruma
- VBScript - ECMA
- Visual Basic 6 - ECMA(使用 Microsoft VBScript 正则表达式 5.5 COM 对象时)
- Visual Studio - 分组大括号为
{}(更多详细信息将在后面介绍。) - wxWidgets - Tcl ARE、POSIX BRE/ERE
- XML 架构 - XML
- XQuery 和 XPath - Xpath
其他参考资料。
【问题讨论】:
-
是的,这很好,但是由于我们从事编程行业,如果我对 .Net/C# 有相同级别的支持,我们确实倾向于使用最适合我们的工具在 Emacs 中,我在 VS2010 中做的,相信我,我会使用它。但即使在我自己的时间进行大量的牦牛剃须,这真的不会发生,所以......你知道,拜托:)
-
非免费但很方便regexbuddy.com/index.html
-
是的,我有它用于 Windows,跨平台的东西会很好,但只是每个实现差异的信息会非常有用。
-
我们不要忘记 Vim 及其自定义的正则表达式。更多信息在这里:stackoverflow.com/questions/3864467/…
标签: regex programming-languages