【发布时间】:2020-05-16 21:30:38
【问题描述】:
re.findall(r'(.)*', 'aabc') 行将返回 ['c', ''] 而不是 ['a', 'a', 'b', 'c', '']。这是为什么呢?
谢谢
【问题讨论】:
标签: python python-3.x regex python-re
re.findall(r'(.)*', 'aabc') 行将返回 ['c', ''] 而不是 ['a', 'a', 'b', 'c', '']。这是为什么呢?
谢谢
【问题讨论】:
标签: python python-3.x regex python-re
你的模式说匹配一个字符(.)的一个捕获组零次或多次*。
此模式有两个匹配项。首先,它将'aabc' 匹配为(.)(单个字符的捕获组)四次。 findall 中的结果将是捕获组的内容,即 c,因为您的组捕获的最后一个内容是 c。
找到的第二个匹配是空字符串(这是一个匹配,因为* 可以表示“零次”),在这种情况下,捕获组中没有捕获任何内容,因此您会得到一个空字符串。
如果你想要结果['a', 'a', 'b', 'c', ''],你可以使用
re.findall(r'.?', 'aabc')
这是“可选地匹配任何单个字符”。
【讨论】: