python 正则表达式同时提取多个字符内容

例如有字符串text='asb,fasdbwz',现在我想同时提取a与b中间的内容(不含ab)和wz,即s、sd、wz,请问正则表达式如何编写?p.s我自己写的为u=r'... 例如有字符串text='asb,fasdbwz',现在我想同时提取a与b中间的内容(不含ab)和wz,即s、sd、wz,请问正则表达式如何编写?p.s我自己写的为u=r'a(.+?)b|wz',可是运行总是匹配不到wz,有大神能解释下吗? 展开
 我来答
紫薇参星
科技发烧友

2018-07-20 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3594万
展开全部

那是因为正则表达式r'a(.+?)b|wz's和sd的结果在第一捕获组中,而wz在第0捕获组中,所以你要不然把wz也用小括号括起来r'a(.+?)b|(wz)'这样分别取第一和第二捕获组的数据,要不然你用r'(?<=a).+?(?=b)|wz 前向预搜索(?<=)和后向预搜索(?=)这样没有捕获组,结果都在第0捕获组中

完整的两种方法的Python程序如下

#!/usr/bin/python 

import re

text='asb,fasdbwz'

u=r'a(.+?)b|(wz)'

result = re.findall(u,text)

for i in range(0,len(result)):

 if result[i][0]=='':

  print(result[i][1])

 else:

  print(result[i][0])


运行结果
s
sd
wz

第二种方法

#!/usr/bin/python 

import re

text='asb,fasdbwz'

u=r'(?<=a).+?(?=b)|wz'

result = re.findall(u,text)

for i in range(0,len(result)):

 print(result[i])

运行结果
s
sd
wz
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式