Ich habe eine funktionierende regex, dass eine der folgenden Zeilen übereinstimmt:Der Versuch, die Regex zu wiederholen bricht die regex
- Ein Interpunktion aus der folgenden Liste
[.,!?;]
- Ein Wort, das von dem Anfang des vorausgeht Zeichenfolge oder ein Leerzeichen.
Hier ist die regex in Frage ([.,!?;] *|(?<= |\A)[\-'’:\w]+)
Was ich brauche es aber zu tun ist, denn es drei Instanzen von dieser entsprechen. So wäre zum Beispiel das ideale Endergebnis in etwa so.
Sample text: "This is a test. Test"
Output
"This" "is" "a"
"is" "a" "test"
"a" "test" "."
"test" "." "Test"
Ich habe einfach versucht {3}
bis zum Ende in der Hoffnung, das Hinzufügen von ihm 3 mal entsprechen. Dies führt jedoch dazu, dass es zu nichts oder nur gelegentlich zu einem ungeraden Zeichen passt. Die andere Möglichkeit, die ich ausprobiert habe, besteht darin, den ganzen Regex 3 Mal zu wiederholen, so wie es ([.,!?;] *|(?<= |\A)[\-'’:\w]+)([.,!?;] *|(?<= |\A)[\-'’:\w]+)([.,!?;] *|(?<= |\A)[\-'’:\w]+)
ist, was schrecklich anzusehen ist, aber ich hoffte, dass es funktionieren würde. Dies hatte den merkwürdigen Effekt zu arbeiten, aber nur wenn mindestens eines der Matches eins der zuvor aufgeführten Interpunktionen war.
Alle Einsichten würden geschätzt werden.
Ich benutze die new regex module found here, so dass ich überlappende Suchen haben kann.
Es wäre viel einfacher, zu sehen, wo die Dinge gehen falsch, wenn Sie tatsächlich ein kurzes und in sich geschlossenes Beispiel mit * aktuellem * Python-Code erstellen. – Evert
Welchen Regex-Versuch wollten Sie als Beispiel? Der Python-Code, der es umgibt, sollte keinen Unterschied machen, aber ich kann es einfügen, wenn Sie nur Kontext wollen. – ninjanomnomSK