|
|
30鱼币
目前学习python中的正则表达式,发现了一个让自己琢磨不透的现象,希望有大侠能解答:
就是
(1)re.findall('(\w)+','abcd')为什么返回的结果是['d']。也就是说为什么返回的是字符串'abcd'的最后一个字符'd'?
(2)re.findall('(\w)?','abcd')为什么返回的结果是['a', 'b', 'c', 'd', '']?
(3)re.findall('(\w)*','abcd')为什么返回的结果是['d', '']?
findall 表示 多次搜索整个字符串
它 优先返回分组中捕获的内容
在 单次搜索中如果捕获多个分组,默认返回 最后捕获的那个。
- >>> import re
- >>> s='abcd'
- >>> exp=(r'(\w)+',r'(\w)?',r'(\w)*')
- >>> for e in exp:
- print('\n表达式:',e)
- for i,m in enumerate(re.finditer(e,s)):
- print('第%d次搜索'%(i+1), m.group(), m.groups(),sep='\n')
-
- 表达式: (\w)+
- 第1次搜索
- abcd
- ('d',)
- 表达式: (\w)?
- 第1次搜索
- a
- ('a',)
- 第2次搜索
- b
- ('b',)
- 第3次搜索
- c
- ('c',)
- 第4次搜索
- d
- ('d',)
- 第5次搜索
- (None,)
- 表达式: (\w)*
- 第1次搜索
- abcd
- ('d',)
- 第2次搜索
- (None,)
复制代码
|
最佳答案
查看完整内容
findall 表示多次搜索整个字符串
它优先返回分组中捕获的内容
在单次搜索中如果捕获多个分组,默认返回最后捕获的那个。
|