Warum führt dieser reguläre Ausdruck zu vier Elementen?

Ich möchte einen String durch @ teil, ->, => oder solche, die mit mehreren Leerzeichen umhüllt sind, was bedeutet, dass ich zwei Elemente erhalten kann,she undhe, aus den folgenden Zeichenfolgen nach dem Teilen:
"she he", "she he", "she he ", "she he ", "she->he", "she ->he", "she=>he", "she=> he", " she-> he ", " she => he \n"

Ich habe versucht, dies zu verwenden:

re.compile("(?<!^)((\\s*[-=]>\\s*)|[\\s+\t])(?!$\n)(?=[^\s])").split(' she  -> he \n')

Was ich bekomme, ist eine Liste mit vier Elementen:[' she', ' -> ', ' -> ', 'he \n'].

Und dafür,

re.compile("(?<!^)((\\s*[-=]>\\s*)|[\\s+\t])(?!$\n)(?=[^\s])").split('she he')

Ich bekomme das:['she', ' ', None, 'he'].

Warum gibt es vier Artikel? Und wie kann ich nur zwei ohne die mittleren zwei bekommen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage