看来,POSIX将正则表达式实现分为两类:基本正则表达式(BRE)和扩展正则表达式(ERE)。
似乎没有指定。
发布于 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添加了一组重要的扩展(扩展仍在缓慢增长),包括但不限于
(?
开头的东西因此,“正则”表达式不再是严格的“正则”表达式。
这是由Philip在一个可移植库中重新实现的,最初用于Exim邮件服务器;他的PCRE文库已经进入了许多不同的应用程序中,包括许多编程语言(Ruby、Python等)。顺便说一句,尽管有这个名称,这个库并不严格地"Perl兼容“(不再);在特性和行为上都有差异。(例如,Perl在内部将*
更改为类似{0,32767}
,而PCRE则执行其他操作。)
早期版本的Python实际上有一个不同的regex实现,并且有计划再改一次 (尽管它将基本保持PCRE)。这就是Python2.7/ 3.5的情况。
https://stackoverflow.com/questions/33907156
复制相似问题