首页 新闻 会员 周边

python 正则表达式 findall和search的问题

0
悬赏园豆:120 [已解决问题] 解决于 2015-09-25 15:02
#代码:
#coding=utf-8
import re
s = 'abc111def abc222def abc345xyz abc678xyz'
reg = r'(?<=abc)((?!abc).)+(?=xyz)'
imgre = re.compile(reg)
re.search(imgre, s)
print ('re.search = ' + re.search(imgre, s).group())
print ('re.findall =', re.findall(imgre, s))
结果:
re.search = 345
re.findall = ['5', '8']
#跪求解释findall为啥不是['345', '678']
桥下穿流水的主页 桥下穿流水 | 初学一级 | 园豆:24
提问于:2015-09-25 14:37
< >
分享
最佳答案
0

正则表达式改为:

r'(?<=abc)((?:(?!abc).)+)(?=xyz)'

原因是用括号捕获重复的数字,只捕获了一个,依旧是最后一个数字。

收获园豆:120
请叫我头头哥 | 大侠五级 |园豆:9382 | 2015-09-25 14:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册