hello? 发表于 2022-8-14 10:17:49

【简单正则表达式问题】

>>> m = re.match("()+", "abc")
>>> m.groups()
('c',)

这段代码groups为什么是c呢,为什么后面还有个逗号
我把正则表达式换成(+)后就不是c了,是不是因为最后一个匹配的字符是c,那逗号又是怎么来的呢
谢谢大佬们

tommyyu 发表于 2022-8-14 12:24:08

逗号代表这是一个元组,因为('c')是一个字符串,而('c',)才是一个元组

suchocolate 发表于 2022-8-14 12:45:08

1.因为括号默认就算捕获组,捕获组输出默认就是以元组形式,看这个应该能解答你的疑问:https://blog.csdn.net/ningyanggege/article/details/105254241
2.()+的加号配合match从头匹配的机制,实际语法就可以理解为这3种情况:(a)
a(b)
ab(c)
又因为默认只显示捕获组(即括号)里的字符,所以就看到的是(c,) ,但实际已经匹配了abc
>>>m = re.match("()+", "abc")
>>>m.group(0)
'abc'

页: [1]
查看完整版本: 【简单正则表达式问题】