2015-11-02 12 views
5

Ich bin ein Buch zu lesen und sehen Tonnen Beispiele wie folgt aus:Ist in [ w d] nicht d redundant?

(?P<email> 
[\w\d.+-]+ # username 
@ 
([\w\d.]+\.)+ # domain name prefix 
(com|org|edu) # limit the allowed top-level domains 
) 

Seit \w bedeutet [a-zA-Z0-9_], \d bedeutet [0-9], \d ist Teilmenge von \w.
Also, sind diese "\ d" s nicht redundant? Bitte jemand bestätigen, dass mein Verständnis stimmt, denn das treibt mich an.

+0

Vielleicht suchen sie speziell nach Wörtern, die mit einer Zahl * enden *, d. H. Smith7 oder jones5. –

+2

@JohnGordon Wenn das der Fall wäre, hätten sie das '\ d'Token außerhalb der Gruppierung, nicht innerhalb. –

+2

das deutet darauf hin, es ist in jedem Fall eine sinnlose Übung: http://davidcel.is/posts/stop-validating-email-addresses-with-regex/ – davejagoda

Antwort

5

Ja, das ist redundant und einfach \w würde genauso gut funktionieren. Siehe https://docs.python.org/2/library/re.html

\d

Wenn der UNICODE Flag nicht angegeben wird, entspricht eine beliebige Dezimalziffer; Dies entspricht dem Satz [0-9]. Mit UNICODE wird alles übereinstimmen, was in der Unicode-Eigenschaftendatenbank als Dezimalziffer klassifiziert ist.

\w

Wenn die LOCALE und UNICODE Flags nicht angegeben sind, passt zu jedem alphanumerischen Zeichen und den Unterstrich; Dies entspricht dem Satz [a-zA-Z0-9_]. Mit LOCALE entspricht es dem Satz [0-9_] plus alle Zeichen, die für das aktuelle Gebietsschema als alphanumerisch definiert sind. Wenn UNICODE festgelegt ist, entspricht dies den Zeichen [0-9_] und allem, was in der Unicode-Eigenschaftendatenbank als alphanumerisch klassifiziert ist.

+0

Warum verlinken Sie für eine Python-Frage zur Perl-Dokumentation? – chepner

+0

Der erste Satz von https://docs.python.org/2/library/re.html erwähnt ausdrücklich Perls Regexes: Dieses Modul bietet reguläre Ausdruck-Matching-Operationen ähnlich denen in Perl. – davejagoda

+0

@davejagoda: Nein, sie sehen ähnlich aus, aber sie sind nicht gleich. Verwenden Sie keine Referenz für eine Sprache für eine andere. – nhahtdh