我对 PCRE(Perl 兼容正则表达式)的强大功能很感兴趣,并且想知道它们是否有可能成为所有主要语言中事实上的方法(我对 Java 感兴趣)。如果有必要,我准备使用图书馆。
我也无法在 SO 中找到一个很好的页面来描述 PCRE 的优缺点,因此如果这不存在,则将其包含在答案中可能会很有用
EDIT我对 Java 1.6 正则表达式之外的功能感兴趣,特别是命名捕获组
似乎更多主流语言实际上使用自己的“类 Perl”正则表达式实现,而不是实际使用 libpcre。属于此类的语言(至少)包括 Java、JavaScript 和 Python。
Java's java.util.regex
库使用的语法很大程度上基于 Perl(大约版本 5.8)正则表达式,包括转义规则、\p
and \P
Unicode 类、非贪婪和“所有格”量词、反向引用、\Q
..\E
引用,以及其中的一些(?...)
构造包括非捕获组、零宽度前向/后向和非回溯组。事实上,与 libpcre 相比,Java 正则表达式与 Perl 正则表达式似乎有更多共同点。 :)
JavaScript 语言还使用源自 Perl 的正则表达式; Unicode 类、lookbehind、所有格量词和非回溯组都不存在,但我提到的 Java 的其余内容在 JS 中也存在。
Python 的正则表达式语法也是基于 Perl 5 的,带有非贪婪量词,大部分(?...)
构造包括非捕获组、前瞻/后视和条件模式,以及命名捕获组(但具有与 Perl 或 PCRE 不同的语法)。 (据我所知)不存在非回溯群和“所有格”量词,\p
and \P
Unicode 字符类,尽管标准\d
, \s
, and \w
如果需要,类可以识别 Unicode。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)