Pythex.org告诉我应该获得5场比赛,但是我尝试的每种方式都不能超过3场。我已经在互联网上搜索了有关匹配对象和匹配对象的文档,使用了help()我无法弄清楚。
>>> z="this is x and this is x and also this is x and x x"
>>> m = re.search('(x+)',z)
>>> m.group(0,1)
('x', 'x')
>>> m.group(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: no such group
>>> m = re.search('(x)',z)
>>> m.group(0,1)
('x', 'x')
>>> m.group(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: no such group
>>> m = re.search(r'(x)',z)
>>> m.group(0,1)
('x', 'x')
>>> m.group(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: no such group
我还尝试在最后的x之间插入单词,但这也不起作用。
答案 0 :(得分:0)
在Python中,re.search()
仅返回句子的第一个匹配项,之后不返回任何内容。
您应该在代码中试用re.findall(x)
。
请始终记住,匹配项(group(0)
)的第0个索引会返回已匹配的完整字符串,因此看起来有两个x
已匹配,但第一个实际上只是与整个正则表达式匹配的字符串。
使用group(1)
时,仅返回第一个括号()
中的文本,该文本恰好与group(0)
相同。
TL; DR
使用re.search()
仅查找第一个匹配项,并使用re.findall()
提取多个匹配项。