首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python正则表达式模块是使用BRE还是ERE?

Python正则表达式模块是使用BRE还是ERE?
EN

Stack Overflow用户
提问于 2015-11-25 01:44:28
回答 1查看 2.9K关注 0票数 12

看来,POSIX将正则表达式实现分为两类:基本正则表达式(BRE)和扩展正则表达式(ERE)。

似乎没有指定。

EN

回答 1

Stack Overflow用户

发布于 2015-11-25 05:13:24

都不是。它基本上是PCRE方言,但却是一个独特的实现。

re文档中的第一句话就是:

此模块提供与Perl中类似的正则表达式匹配操作。

虽然这并不能立即向新来的人揭示它们与POSIX正则表达式的关系,但是大家都知道Perl 4和以后的Perl 5提供了一个大大扩展的特性集,而不是以前工具的regex特性,包括POSIX为grep -E提供的命令。

手册页更详细地描述了正则表达式的特性,不过在Python文档中,您可以在不同的形式中找到很多相同的细节。Perl手册页包含以下历史记录:

Perl模式匹配中使用的模式是从版本8 regex例程中提供的模式演变而来的。(例程是从Henry的V8例程的可自由再分配的可重新实现中派生出来的。)

(在这里,V8是指第8版Unix。斯宾塞的图书馆基本上是(Re)实现的POSIX正则表达式。)

Perl 4具有大量方便的构造,如\d\s\w以及符号缩写(如\t\f\n )。Perl 5添加了一组重要的扩展(扩展仍在缓慢增长),包括但不限于

  • 非贪婪量词
  • 非回溯量词
  • Unicode符号和属性支持
  • 非分组括号
  • 头和头后看
  • ..。基本上,任何以(?开头的东西

因此,“正则”表达式不再是严格的“正则”表达式。

这是由Philip在一个可移植库中重新实现的,最初用于Exim邮件服务器;他的PCRE文库已经进入了许多不同的应用程序中,包括许多编程语言(Ruby、Python等)。顺便说一句,尽管有这个名称,这个库并不严格地"Perl兼容“(不再);在特性和行为上都有差异。(例如,Perl在内部将*更改为类似{0,32767},而PCRE则执行其他操作。)

早期版本的Python实际上有一个不同的regex实现,并且有计划再改一次 (尽管它将基本保持PCRE)。这就是Python2.7/ 3.5的情况。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33907156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档