7

我想知道 Python 使用了哪种 RegEx 风格?它是 PCRE、Perl 兼容还是 ICU 或其他?

4

3 回答 3

10

它与Perl足够兼容,这意味着大多数 Perl 表达式无需修改即可工作。它旨在与 Perl 兼容,但当然也有一些细微差别。

从技术上讲,它使用自己的正则表达式风格。例如,早在其他实现采用该语法之前,Python 正则表达式就提供了命名组。它还支持开箱即用的 Unicode。如今,大多数 Python 扩展都在其他地方得到支持。请参阅http://docs.python.org/library/re.html

于 2012-08-18T21:43:47.400 回答
4

不幸的是,我无法直接回答评论,但原子块是一个重要功能(尽管很少有人了解它们的功能),因为您可以使用它创建多字节字符序列。即在Windows 中,换行符是\r\n。

示例:/(?>\r\n|\n|\r)\p{Any}/ 匹配到 \n\r 或 \r.,因为这是换行符和任何字符文字的组合,但确实如此与 \r\n 不匹配,因为换行符后面没有任何内容。

于 2012-08-23T04:04:14.610 回答
2

这里有一个很好的 Python 正则表达式支持概述。

把它们加起来:

Python 的正则表达式语法中唯一缺少的重要特性是原子分组、所有格量词和 Unicode 属性。

原子分组和所有格量词不会给语言增加太多的表达能力。它们本质上是为了更简单和更快的正则表达式。

Python regex 支持 Unicode,因为您可以使用文字 unicode 字符,例如 Æ,但您不能在 regex 本身中使用任何 Unicode 转义码。

于 2012-08-18T21:42:11.930 回答