python - python3中`re.findall(r'(.)*', 'aabc')`结果的原因
问题描述
该行将re.findall(r'(.)*', 'aabc')
返回 ['c', ''] 而不是 ['a', 'a', 'b', 'c', '']。这是为什么?
谢谢
解决方案
您的模式说匹配一个字符的一个捕获组(.)
零次或多次*
。
此模式有两个匹配项。首先,它匹配'aabc'
为 (.)
(单个字符的捕获组)四次。结果findall
将是捕获组的内容,即c
,因为您的组捕获的最后一件事是c
。
找到的第二个匹配项是空字符串(这是一个匹配项,因为*
它可能意味着“零次”),在这种情况下,捕获组中没有捕获任何内容,因此您会得到一个空字符串。
如果你想要结果['a', 'a', 'b', 'c', '']
,你可以使用
re.findall(r'.?', 'aabc')
这是“可选地匹配任何单个字符”。
推荐阅读
- javascript - 如何从 JSONArray 中删除重复项
- .net - 超出 Azure Web 应用程序最大请求长度
- php - PHP + MYSQL 优化复杂查询
- android - 模型类中的变量名重复,在 ANDROID STUDIO 中进行混淆时出错
- powershell - Invoke-WebRequest Select-Object -Expand Content 不返回完整内容
- r - 在 R 闪亮的控制台中不生成输出
- markdown - Zeppelin - 动态表单 - 如何创建用于输入密码的屏蔽字段
- laravel - 如何在 laravel 中处理动态 url
- html - 我以百分比 (%) 为 div 元素设置“高度”CSS 属性,但 html 不呈现任何内容。谁能帮我?
- sas - %QUOTE 和 %BQUOTE 之间的区别