正则表达式在每种编程语言中都一样吗?

Her*_*c01 6 python regex shell scripting

我是一名想要学习正则表达式的 Python 用户,我在 Udemy 上有一门很好的课程,似乎还可以。然而,它既不是 Python 课程也不是 Python 正则表达式课程。

正则表达式在任何编程语言上都一样吗?

我的意思是它们会相同并使用与repython 中的包完全相同的语法吗?

me_*_*me_ 5

它们有变化...

这个网站将为您提供一种测试某些常见语言(包括 python)表达的方法...

https://regex101.com/


Rol*_*ith 3

实现之间存在着巨大和微妙的显着差异。

根据 (2.7) regex howto,Python 的re模块基于 Perl 正则表达式。正则表达式语法几乎相同。Perl 中的用法完全不同;更紧凑(或更难读,取决于您的观点:-)。

另请记住,Python 2 和 3 之间的正则表达式存在差异,具体取决于使用的标志。稍微简化一下,您可以说 Python 2 正则表达式开箱即用地处理 ASCII 字符串,而 Python 3 则处理 unicode 字符串。

在Python正则表达式中,*+限定符是贪婪的,即它们匹配尽可能多的文本。这导致结果不直观。例如,假设您要搜索尖括号之间的文本。您可能认为这<.*>可能会做到这一点。但请注意:

In [1]: import re

In [2]: re.findall('<.*>', '<a> <b> <c>')
Out[2]: ['<a> <b> <c>']
Run Code Online (Sandbox Code Playgroud)

你必须添加 a?以使它们不贪婪。

In [3]: re.findall('<.*?>', '<a> <b> <c>')
Out[3]: ['<a>', '<b>', '<c>']
Run Code Online (Sandbox Code Playgroud)

明确地说,您必须寻找除结束字符之外的任何内容。

In [4]: re.findall('<[^>]*>', '<a> <b> <c>')
Out[4]: ['<a>', '<b>', '<c>']
Run Code Online (Sandbox Code Playgroud)

Linux 和 *BSD 等类 UNIX 系统通常在许多实用程序中支持 POSIX 正则表达式。它们有两种风格:基本的和扩展的。基本 POSIX 正则表达式不支持分支元字符|