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