2016-04-08 11 views
0

Regexp: editClassification/(?P<pk>[\d+])Warum findet d + nur eine Ziffer in diesem Python regexp?

String entsprechen: foo/editClassification/10

pythex example

+0

entfernen Zeichenklasse und Verwendung '(\ d +)' statt – rock321987

+0

Dies kommt in der Regel, wenn die Menschen übermäßige Gebrauch von Zeichenklassen wie '[\ d] up' oder '[\ s]'. Beim Versuch, sich auszudehnen, werden sie ratlos und stellen diese Fragen, die hier häufig auftauchen. –

Antwort

2

Weil \d+ innerhalb einer Zeichenklasse ([...]); [\d+] entspricht genau einem Zeichen, das entweder eine Ziffer oder + ist.

Sie sollten stattdessen (?P<pk>\d+) schreiben.

1

Ihre \d+ war in einem Zeichenklasse (Mehr Infos finden Sie unter Regexp Tutorial oder PHP Docs zu finden). Dies bedeutet, dass jeder Buchstabe innerhalb ausgewählt ist. Zum Beispiel entspricht (a|b|c) der Zeichenklasse [abc]. Ihre Zeichenklasse entspricht also entweder einer Ziffer oder einer +.

Sie sollten die eckigen Klammern ] um die \d+ entfernen. Ihr neuer RegEx:

editClassification/(?P<pk>\d+) 

Alternativ können Sie nur die + außerhalb der Zeichenklasse bewegen, aber das nur verschwendet Raum.

Live Demo on Pythex

Verwandte Themen