Regexp: editClassification/(?P<pk>[\d+])
Warum findet d + nur eine Ziffer in diesem Python regexp?
String entsprechen: foo/editClassification/10
Regexp: editClassification/(?P<pk>[\d+])
Warum findet d + nur eine Ziffer in diesem Python regexp?
String entsprechen: foo/editClassification/10
Weil \d+
innerhalb einer Zeichenklasse ([...]
); [\d+]
entspricht genau einem Zeichen, das entweder eine Ziffer oder +
ist.
Sie sollten stattdessen (?P<pk>\d+)
schreiben.
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.
entfernen Zeichenklasse und Verwendung '(\ d +)' statt – rock321987
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. –