实现之间存在着巨大和微妙的显着差异。
根据 (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 正则表达式不支持分支元字符|。
| 归档时间: |
|
| 查看次数: |
2105 次 |
| 最近记录: |