请解释以下行为。
matches=re.findall('([^\d]{3,})|(g8 )',input_string)
for m in matches:
print type(m)
给出<type 'tuple'>
matches=re.findall('([^\d]{3,})',input_string)
for m in matches:
print type(m)
给出<type 'unicode'>
答案 0 :(得分:1)
由于第一个正则表达式中存在两个捕获组,re.findall
应该返回一个元组列表,其中包含每个元素的两个元素。元组上的项目数基于捕获组(&gt; = 2)。
在第二种情况下,只有一个捕获组存在,因此它返回一个unicode字符串列表。
示例:
>>> import re
>>> s = 'fohgsdhgfo'
>>> re.findall(r'(f)|(o)', s)
[('f', ''), ('', 'o'), ('f', ''), ('', 'o')]
>>> re.findall(r'(f)', s)
['f', 'f']