How????are!!!you
我想将字符串拆分为['How','are','you']
.
我尝试了以下正则表达式:
\?*|\!*
这是行不通的。但是,以下正则表达式有效:
\?+|\!+
有人向我解释这个吗?
>>> re.split(r'[?!]*', 'How????are!!!you')
['How', 'are', 'you']
至于为什么\?*|\!*
不起作用,看看re.findall
发现了什么:
>>> re.findall(r'\?*|\!*', 'How????are!!!you')
['', '', '', '????', '', '', '', '', '', '', '', '', '', '']
如果可能,交替总是采用第一个分支。re.split
尝试仅按非空匹配拆分,因此您最终拆分为?
但不拆分!
(因为\?*
将匹配任何空字符串,\!*
永远不会以非重叠方式匹配)。