Python正则表达式字符模式组

我试图做一个正则表达式模式来匹配字符串中所有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?


哆啦的时光机
浏览 167回答 2
2回答

江户川乱折腾

您可以将字符串拆分为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']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python