python正则re模块的group

在写正则的时候,取出的结果用group属性显示出来是完整的字符串,用type函数检测也得出结果是字符串类型,但是为何使用group(num)的时候取到的不是按照字符串的索引取到的值呢?

str = 'python is the best langusge' 
res = re.match('(.*) is (.*?) .*', str)
print(res.group())
print(type(res.group()))

得到的结果是python is the best language
但是使用res.group(1)的时候得到的结果是'python',为什么不是按照字符串的索引取值呢?

你的正则匹配规则是获取字符串 空格is空格 前面所有的字符串和 空格is空格后面下一个空格前面 所有的字符串,你在前面加一个helloword一样能在res.group(1)中取出来,第二个匹配出来的字符串是 the 随后就再也没有匹配出来的字符串了
如果你想按照你的方法匹配后获得索引取值,可以用

datalist=res.groups()
datalist[0]
datalist[1]

,如果你想提取英文字母,可以使用下面这个

re.findall('[A-Za-z]+',str)

如果你想匹配单个字母可以使用这个

print(re.findall('[A-Za-z]',str))

有帮助请点击右上角采纳,有问题继续交流,你的采纳是对我回答的最大的肯定和动力