Py学习  »  问与答

[精华] 求助--下面正则表达式的结果,及原因

独霸一方宝宝 • 7 年前 • 1958 次点击  
m = re.match('([cab])+',"cacb")
if m:
    print m.groups()
最后一次修改于 (2016-11-19 00:50)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/1711
 
1958 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Py站长
Reply   •   1 楼
Py站长    7 年前

我理解是这样的,+ 可以理解为以下方式

import re

m = re.match('([cab])([cab])([cab])([cab])', "cacb")
if m:
    print m.groups()

由于 () 会不断覆盖前面的值,因此,在原式中得出的值一定是最后一个 b

再举例,

import re

m = re.match('([cab])+b', "cacb")
if m:
    print m.groups()

得出的结果是 c

Py站长
Reply   •   2 楼
Py站长    7 年前
  tmp cat tmp.py
import re
m = re.match('([cab])+',"cacb")
if m:
    print m.groups()
  tmp python tmp.py
('b',)

具体原因有点奇怪,没想通