2017-06-06 3 views
0

Ich bin mit python2.7 und begegne ich folgendes Problem habe ich die Zeichenfolge:Python Regex re.findall

s = 'No of tests: 23' 

ich den Anschluss an die regex bin mit:

re.findall('No of tests: \d+',s) 

Und anscheinend Der Regex gibt eine leere Liste zurück. Irgendeine Idee warum?

+2

Es gibt einen Tippfehler, '/ d +' muss als '\ d +' geschrieben werden (d. H. 'R'No der Tests: \ d + ''). Nachdem Sie den Tippfehler behoben haben, [das Problem besteht nicht mehr] (https://ideone.com/Tv6M5y). –

+0

Es war ein Tippfehler, das Problem besteht weiter. – distrobyte

+0

Kann nicht reproduziert werden. Ich bekomme '['No of tests: 23']', wie erwartet, auf Python 2.6.6 und 3.6.0. Übrigens ist es eine gute Idee, rohe Zeichenketten für jede Regex zu verwenden, die umgekehrte Schrägstriche enthält. –

Antwort

1

Ihre Zeichenfolge enthält 2 Leerzeichen vor der Nummer.

Es ist eine gute Idee, \s* zu verwenden, um alle null oder mehr Leerzeichen zu entsprechen, wenn die Eingabezeichenfolge benutzerdefiniert ist und Leerzeichen unterschiedliche Nummern haben können. Um sicherzustellen, dass es 1 oder mehr Leerzeichen gibt, verwenden Sie \s+.

Daher ist es ratsam,

r'No\s+of\s+tests:\s*\d+' 

Hinweis zu verwenden, dass rohe Stringliterale am besten sind, wenn regex Muster in Python zu definieren (Sie werden keine Probleme bekommen aufgrund von Sonderzeichen zu entkommen, hier nicht der Fall, obwohl).