2016-06-02 10 views
0

Im folgenden Code erwarte ich, dass das Programm "Match" ausgibt, weil "\D+\d" dem "x4" Teil der Zeichenfolge entspricht. Aber es druckt nichts. Was ist das Problem?Seltsames Verhalten der Funktion re.match in Python 3

import re 
pattern = r"\D+\d" 
if re.match(pattern, "1x4"): 
    print("Match"); 

Dank

+3

Sie wollen 're.search', nicht' re.match'. (Es gibt viele doppelte Fragen da draußen) –

+1

're.match()' entspricht dem Anfang der Zeichenfolge. – SilentMonk

+0

Oh! Tut mir leid, es war ein Fehler. – MrDetective

Antwort

2

Ihre Annahme, dass re.match überall innerhalb einer Zeichenfolge übereinstimmen kann falsch ist.

https://docs.python.org/2/library/re.html#re.RegexObject.match

Wenn null oder mehr Zeichen am Anfang der Zeichenfolge Spiel dieses reguläre Ausdruck, gibt eine entsprechende MatchObject Instanz. Geben Sie None zurück, wenn die Zeichenfolge nicht mit dem Muster übereinstimmt. Beachten Sie, dass sich dies von einer Null-Länge-Übereinstimmung unterscheidet.

Verwenden Sie stattdessen re.search().