在使用正则表达式帮助解决Python挑战中的问题时,我遇到了一些使我感到困惑的行为.
从这里:
(...)匹配括号内的正则表达式.
和
'+'使得结果RE匹配前一个RE的1次或更多次重复.
所以这是有道理的:
>>>import re
>>>re.findall(r"(\d+)", "1111112")
['1111112']
Run Code Online (Sandbox Code Playgroud)
但这不是:
>>> re.findall(r"(\d)+", "1111112")
['2']
Run Code Online (Sandbox Code Playgroud)
我意识到当正则表达式中存在组时,findall只返回组,但为什么只返回'2'?比赛中所有1的发生了什么?
Ben*_*ank 10
因为您只有一个捕获组,但它反复"运行",所以新匹配将重复输入该组的"存储空间".换句话说,1当他们被后续的1s "覆盖" 并最终被"覆盖"时,s就会丢失2.
| 归档时间: |
|
| 查看次数: |
692 次 |
| 最近记录: |