Python中使用哪种正则表达式风格?

时间:2012-08-18 21:37:54

标签: python regex pcre icu

我想使用哪种RegEx-Flavor用于Python?它是PCRE,Perl兼容还是ICU或其他东西?

3 个答案:

答案 0 :(得分:7)

它兼容足够 w / Perl,这意味着大多数Perl表达式都可以不加修改地工作。它旨在兼容Perl,但当然,存在一些细微差别。

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

可以很好地概述Python的正则表达式支持here

总结一下:

  

Python正则表达式语法中缺少的唯一重要功能是原子分组,占有量词和Unicode属性。

原子分组和占有量词不会给语言增添很多表达能力。它们主要用于更简单,更快速的正则表达式。

Python正则表达式支持Unicode,因为你可以使用像Æ这样的文字unicode字符,但是你不能在正则表达式中使用任何Unicode转义码。