2017-10-05 2 views
2

Ich versuche, Zahlen, die 5 Ziffern mit Regex in Python übereinstimmen. Dies ist mein Code:Python Regex gibt mir keine Übereinstimmungen

import re 
matchstring = "These are 10101 random numbers 34345." 
regex_string = r'(?<!\d)\d{5}(?!\d)' 
all_matches = re.findall(matchstring, regex_string) 

Ich habe keine Ahnung, warum ich 0 Matches bekommen, wenn ich 2. bekommen soll ich habe versucht, mit dieser Regex auf 2 Python-Validator-Site und an beiden Standorten dieser Arbeit. Irgendeine Idee, warum in meinem Code bekomme ich eine leere Liste?

+0

, die unheimlich ist, wie die „Original“ Frage nach _5_ Ziffern fragt genau so gut ... –

Antwort

4

Funktion re.findall akzeptiert Argumente in der Reihenfolge: Muster, dann string:

re.findall(regex_string, matchstring) 
['10101', '34345'] 
+0

umgekehrte Reihenfolge: OP hat die Reihenfolge falsch, nicht 'findall' –

+0

ich meine„ um vorgeschlagene Reverse“:) Allerdings in verschiedenen Sprachen können unterschiedliche Reihenfolge sein - so ist es leicht zu verblüffen. –

1

Sie können dies versuchen:

import re 
matchstring = "These are 10101 random numbers 34345." 
final_numbers = [i for i in re.findall("\d+", matchstring) if len(i) == 5] 

Ausgang:

['10101', '34345'] 
1
import re 
matchstring = "These are 10101 random numbers 34345." 
regex_string = r"\b\d{5}\b" 
re.findall(regex_string , matchstring) 

Ausgabe:

['10101', '34345'] 
+0

versuchen Sie mit Zahlen am Ende: '" Dies sind 10101 Zufallszahlen 34345 "' –

+0

Sie können auch 'r" \ b \ d {5} \ b "' verwenden. – Dharmesh

+0

Ja, das ist mehr wie es. –

Verwandte Themen