【问题标题】:Which Regular Expression flavour is used in Python?Python 中使用了哪种正则表达式风格?
【发布时间】:2012-08-14 21:14:27
【问题描述】:

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

【问题讨论】:

    标签: python regex pcre icu


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 不错!感谢您提供有用的答案。祝你今天过得愉快。我想在 C++ 项目中使用我朋友的项目正则表达式,并认为 PCRE 非常适合它;-) 谢谢大家!
      【解决方案3】:

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

      总结一下:

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

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

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

      【讨论】:

      • 这只是内置的正则表达式。还有其他正则表达式库的包装器,以及pypi.python.org/pypi/regex 的实现,旨在与 re 模块向后兼容。
      猜你喜欢
      • 1970-01-01
      • 2011-02-05
      • 2018-06-08
      • 1970-01-01
      • 2016-07-20
      • 2014-12-10
      • 2017-02-08
      • 2011-04-17
      • 2015-05-31
      相关资源
      最近更新 更多