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?