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,有大神能解释下吗?
展开
1个回答
展开全部
那是因为正则表达式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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询