perl 和 java 正则表达式功能有啥区别?

Posted

技术标签:

【中文标题】perl 和 java 正则表达式功能有啥区别?【英文标题】:What are the differences between perl and java regex capabilities?perl 和 java 正则表达式功能有什么区别? 【发布时间】:2012-12-11 09:29:12 【问题描述】:

perl 和 java 在支持哪些正则表达式术语方面有什么区别?

这个问题只限于正则表达式,并且特别排除了如何正则表达式的使用差异 - 即使用正则表达式的可用函数/方法 - 以及语言之间的句法差异,例如java要求转义反斜杠等。

特别令人感兴趣的是 java 对可变长度后视的部分/偶尔支持。

【问题讨论】:

有点题外话,但这是 ECMA (JS) 正则表达式和 Perl 之间的粗略比较:***.com/a/12127503/1400768 【参考方案1】:

java.util.regex.Pattern 的“与 Perl 5 比较”部分列出了许多不同之处。例如,Java 不支持conditional regex。为此,您需要使用一些外部库,例如 JRegex。

【讨论】:

这似乎很完整。为此,我要补充一点,Perl 正则表达式引擎比其他引擎具有更好的 Unicode 支持。事实上,Perl 开发人员最近遇到了 Unicode 标准中的缺点,因为没有人能达到 Perl 以前的水平。 (因此标准更新了!)【参考方案2】:

java.util.regex.Pattern API 中有一段“Comparison to Perl 5”。

【讨论】:

请添加链接。我从搜索中得到的页面说 Perl 正则表达式没有五年前添加的功能。 @ikegami .. 可能您访问了 Java 6 或更早版本的链接。搜索PAttern class in Java 7。我已在答案中添加了链接。【参考方案3】:

来自 Tom Christiansen 的 OSCON 演讲 Unicode Support Shootout: The Good, the Bad, & the (mostly) ugly 的幻灯片涵盖了 Perl 和 Java(以及其他语言)在支持正则表达式的 Unicode 技术建议方面的一些差异,它们区分了 Java 1.6 和 1.7(显着改进了支持)。

【讨论】:

以上是关于perl 和 java 正则表达式功能有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

[\s\S]* 有啥区别?和 。*?在 Java 正则表达式中?

vi 正则表达式

老男孩带你了解perl正则表达式中的零宽断言

正则表达式、linq表达式、lambda 表达式区别 ,这3者有啥关系和区别么?

老男孩带你了解perl正则表达式中的零宽断言

JS和PHP的正则表达式的区别