2017-02-18 1 views
0
import re 

line = "Cats are smarter than dogs" 

matchObj = re.match(r'(.*) are (.*)', line) 

if matchObj: 

    print ("matchObj.group(2) : ", matchObj.group(2)) 
else: 

    print ("No match!!") 

enthalten Wenn ich diesen Code ausführen ich eine ouput erhalten: smarter than dogsWas ist der Unterschied, wenn ich einen Raum in Regular Expression

Aber wenn einen zusätzlichen Raum am Ende meines mein RE setzen

matchObj = re.match(r'(.*) are (.*) ', line) 

ich ausgegeben als: smarter than

Kann mir jemand erklären, warum bin ich diesen Unterschied in der Ausgabe immer

Antwort

0

Wenn Sie den zusätzlichen Speicherplatz in matchObj = re.match(r'(.*) are (.*) ', line) hinzufügen, werden Sie aufgefordert, so viele Zeichen wie möglich in (.*) gefolgt von einem Leerzeichen abzugleichen. In diesem Fall ist es smarter than, da das Leerzeichen das Leerzeichen in dogs entspricht.

Ohne Leerzeichen kann . eine beliebige Anzahl von Zeichen außer der neuen Zeile enthalten. Also endet es bis zum Ende der Zeichenfolge, smarter than dogs.

Lesen Sie die Dokumentation auf regex für weitere Informationen.