我想捕获序列' AE'
之前的单词(如果有的话)或序列' BE'
之前的单词(如果有的话),或两个单词出现在字符串中的两个单词。
我尝试使用以下正则表达式:
TEST = re.compile(
r'(.*?)'
r'(?:(\w+) AE)?'
r'.*?'
r'(?:(\w+) BE)?')
它捕获' BE'
之前的单词或' AE'
之前的单词但不捕获
两个字。
>>> TEST.match('').groups()
('', None, None)
>>> TEST.match('foo AE').groups()
('', 'foo', None)
>>> TEST.match('foo BE').groups()
('', None, 'foo')
>>> TEST.match('foo AE bar BE').groups()
('', 'foo', None)
相反,我希望输出的最后一行是
>>> TEST.match('foo AE bar BE').groups()
('', 'foo', 'bar')
答案 0 :(得分:1)
>>> pattern = re.compile(r'\s*(.*?)\s*(?:AE|BE)')
>>>
>>> pattern.findall('')
[]
>>> pattern.findall('bar BE')
['bar']
>>> pattern.findall('foo AE')
['foo']
>>> pattern.findall('foo AE bar BE')
['foo', 'bar']