Python正则表达式:由重复的标点符号分割

Python正则表达式:由重复的标点符号分割,python,regex,Python,Regex,我想将字符串拆分为['How','are','you'] 我尝试了以下正则表达式: How????are!!!you 这是行不通的。但是,以下正则表达式有效: \?*|\!* 有人给我解释一下吗 \?+|\!+ 至于为什么\?*|\*不起作用,只需看看re.findall找到了什么: >>> re.split(r'[?!]*', 'How????are!!!you') ['How', 'are', 'you'] 如果可能的话,交替始终采用第一个分支re.split尝试只

我想将字符串拆分为
['How','are','you']

我尝试了以下正则表达式:

How????are!!!you
这是行不通的。但是,以下正则表达式有效:

\?*|\!*
有人给我解释一下吗

\?+|\!+
至于为什么
\?*|\*不起作用,只需看看
re.findall
找到了什么:

>>> re.split(r'[?!]*', 'How????are!!!you')
['How', 'are', 'you']
如果可能的话,交替始终采用第一个分支
re.split
尝试只按非空匹配项进行拆分,因此最终按
进行拆分,而不是
(因为
\?*
将匹配任何空字符串,
\!*
将永远不会以非重叠方式匹配)

>>> re.findall(r'\?*|\!*', 'How????are!!!you')
['', '', '', '????', '', '', '', '', '', '', '', '', '', '']