为了账号安全,请及时绑定邮箱和手机立即绑定

Python正则表达式字符模式组

Python正则表达式字符模式组

哆啦的时光机 2021-03-04 10:10:11
我试图做一个正则表达式模式来匹配字符串中所有A ..组,直到下一个A。(Python)例如:DFDAXDJSDSJDAFGCJASDJASAGXCJAD到:'AXDJSDSJD''AFGCJ''ASDJ''AS''AGXCJ''AD'我想到的最接近的东西是:string="DFDAXDJSDSJDAFGCJASDJASAGXCJAD"r=re.compile('(A.[!=A]*)+')matchObj = r.findall(string, re.M|re.I)哪个返回 AF, AS, ASA, AD为什么跳过第一个?为什么它不返回所有字符直到下一个A?
查看完整描述

2 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

您可以将字符串拆分为A:


>>> s = "DFDAXDJSDSJDAFGCJASDJASAGXCJAD"

>>> s.split('A')

['DFD', 'XDJSDSJD', 'FGCJ', 'SDJ', 'S', 'GXCJ', 'D']


# add a leading `A` to each match 'on the fly'

>>> [ 'A%s' % s for s in  s.split('A') ]

['ADFD', 'AXDJSDSJD', 'AFGCJ', 'ASDJ', 'AS', 'AGXCJ', 'AD']

或使用可选的正向前行:


>>> re.findall('(A[^A]+(?=A)?)', s, re.IGNORECASE | re.MULTILINE)

['AXDJSDSJD', 'AFGCJ', 'ASDJ', 'AS', 'AGXCJ', 'AD']

或简单地(如果您不关心下一个A-相当于说它是可选的):


>>> re.findall('(A[^A]+)', s, re.IGNORECASE | re.MULTILINE)

['AXDJSDSJD', 'AFGCJ', 'ASDJ', 'AS', 'AGXCJ', 'AD']


查看完整回答
反对 回复 2021-03-29
  • 2 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号