我写了这个正则表达式:
p = re.compile(r'''
\[\[ #the first [[
[^:]*? #no :s are allowed
.*? #a bunch of chars
(
\| #either go until a |
|\]\] #or the last ]]
)
''', re.VERBOSE)
我希望使用
re.findall
来获取一些字符串中所有匹配的部分。我写了一些测试代码,但给出的结果很奇怪。这是代码:
g = p.finditer(' [[Imae|Lol]] [[sdfef]]')
print g
for elem in g:
print elem.span()
print elem.group()
给我这个输出:
(3, 10)
[[Imae|
(20, 29)
[[sdfef]]
完全有道理,对吧?但是当我这样做时:
h = p.findall(' [[Imae|Lol]] [[sdfef]]')
for elem in h:
print elem
输出结果如下:
|
]]
为什么findall()和finditer()的结果不同呢?