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
空でない一致によってのみ分割しようとするため、最終的には分割されますが、そうで?
はありません!
( は\?*
空の文字列に\!*
一致するため、重複しない方法で一致することはありません)。