【发布时间】:2012-08-14 21:14:27
【问题描述】:
我想知道 Python 使用了哪种 RegEx 风格?它是 PCRE、Perl 兼容还是 ICU 或其他?
【问题讨论】:
我想知道 Python 使用了哪种 RegEx 风格?它是 PCRE、Perl 兼容还是 ICU 或其他?
【问题讨论】:
它与 Perl 兼容足够,这意味着大多数 Perl 表达式无需修改即可工作。它旨在与 Perl 兼容,但当然也有一些细微差别。
从技术上讲,它使用自己的正则表达式风格。例如,早在其他实现采用该语法之前,Python 正则表达式就提供了命名组。它还支持开箱即用的 Unicode。如今,大多数 Python 扩展都在其他地方得到支持。见http://docs.python.org/library/re.html
【讨论】:
很遗憾,我无法直接回复评论,但原子块是一项重要功能(尽管很少有人了解它们的强大功能),因为您可以使用它创建多字节字符序列。 IE。在 Windows 中,换行符是 \r\n。
示例:/(?>\r\n|\n|\r)\p{Any}/ 匹配 \n\r 或 \r.,因为这是换行符和任何字符文字的组合,但它与 \r\n 不匹配,因为换行符后面没有任何内容。
【讨论】:
对 Python 的正则表达式支持 here 有一个很好的概述。
总结一下:
Python 的正则表达式语法中唯一缺少的重要特性是原子分组、所有格量词和 Unicode 属性。
原子分组和所有格量词不会为语言增加太多的表达能力。它们本质上是为了更简单、更快的正则表达式。
Python 正则表达式支持 Unicode,因为您可以使用文字 unicode 字符,例如 Æ,但不能在正则表达式本身中使用任何 Unicode 转义码。
【讨论】: