2016-11-26 3 views
3

Ich muss alle Zeichenfolgen wie (\ w \ s), mit einer Mindestlänge von 3, mit einer Python-Regex für Fund-Methode erfassen. Das ist: so viele "Wörter" (Teilstrings) wie möglich zu finden, die aus einer Verkettung von mindestens 3 bestehen.Python Regex zum Erfassen aller Zeichenfolgen wie ( w s) +

Zum Beispiel für:

This is an e x a m p l e about T H I S question. 

findall zurückkehren sollte:

["e x a m p l e ", "T H I S "] 

bereits versucht, mit:

\S\S+(\w\s+){3,}\S+ 
+0

Was 'A' in' A \ s' ist? Ist es ein Großbuchstabe? – Mohammad

+0

Warte, * was * möchtest du zusammenbringen? Fügen Sie weitere Beispiele hinzu. – Blacksilver

+0

Haben Sie Ihre Regex zuerst versucht? https://regex101.com –

Antwort

6

Verwenden Sie den folgenden Ansatz mit spezifischen RegexMuster:

s = 'This is an e x a m p l e about T H I S question.' 
result = re.findall(r'\b((?:\w\s){3,})', s) 

print(result) 

Der Ausgang:

['e x a m p l e ', 'T H I S '] 
+1

Daumen hoch für ein Problem, das einfach erschien und nicht war. Könntest du mehr über den '?:' Teil erklären (nicht konsumierendes Rückwärtskram oder sowas). –

+1

@ Jean-FrançoisFabre, willkommen. ohne nicht-einfangende Gruppe '(([\ w] \ s) {3,})', nimmt sie neben der äußeren Gruppe den nicht benötigten letzten Teil jeder vollständigen Übereinstimmung mit dem Ergebnis '[('example', ' e '), (' THIS ',' S ')] – RomanPerekhrest

+0

das Problem, das ich hatte, als ich versuchte, das zu beantworten. –

Verwandte Themen