2
How????are!!!you

文字列を に分割したいと思います['How','are','you']

次の正規表現を試しました:

\?*|\!*

これは機能しません。ただし、次の正規表現は機能します。

\?+|\!+

誰か私にこれを説明してくれませんか?

4

1 に答える 1

5
>>> re.split(r'[?!]*', 'How????are!!!you')
['How', 'are', 'you']

\?*|\!*うまくいかない理由については、次の結果を見てre.findallください。

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

代替は、可能であれば常に最初の分岐を取ります。re.split空でない一致によってのみ分割しようとするため、最終的には分割されますが、そうで?はありません!( は\?*空の文字列に\!*一致するため、重複しない方法で一致することはありません)。

于 2013-01-28T07:48:59.040 に答える