webentwicklung-frage-antwort-db.com.de

was bedeutet das Django Regex? `? P`

Ich habe den folgenden regulären Ausdruck in meiner urls.py und möchte wissen, was das bedeutet. Insbesondere der Teil (?P<category_slug> Des regulären Ausdrucks.

r'^category/(?P<category_slug>[-\w]+)/$

63
locoboy

(?P<name>regex) - Runde Klammern gruppieren den regulären Ausdruck zwischen ihnen. Sie erfassen den Text, der mit dem Regex in ihnen übereinstimmt und auf den durch den Namen zwischen den spitzen Klammern verwiesen werden kann. Der Name kann aus Buchstaben und Ziffern bestehen.

Kopieren und einfügen von: http://www.regular-expressions.info/refext.html

49
Marcus

In Django werden benannte Erfassungsgruppen als Schlüsselwortargumente an Ihre Ansicht übergeben.

Unbenannte Erfassungsgruppen (nur eine Klammer) werden Ihrer Ansicht als Argumente übergeben.

Das? P ist eine benannte Erfassungsgruppe im Gegensatz zu einer nicht benannten Erfassungsgruppe.

http://docs.python.org/library/re.html

(?P<name>...) Ähnlich wie reguläre Klammern, jedoch ist die von der Gruppe gefundene Teilzeichenfolge im Rest des regulären Ausdrucks über den symbolischen Gruppennamen name zugänglich. Gruppennamen müssen gültig sein Python Bezeichner, und jeder Gruppenname darf nur einmal innerhalb eines regulären Ausdrucks definiert werden. Eine symbolische Gruppe ist auch eine nummerierte Gruppe, so als ob die Gruppe nicht benannt wäre Die im folgenden Beispiel als ID bezeichnete Gruppe kann auch als nummerierte Gruppe 1 bezeichnet werden.

67

(?P<category_slug>) Erstellt eine Übereinstimmungsgruppe mit dem Namen category_slug.

Die Regex selbst entspricht einer Zeichenfolge, die mit category/ Beginnt, und einer Mischung aus alphanumerischen Zeichen, dem Bindestrich - Und dem Unterstrich _, Gefolgt von einem abschließenden Schrägstrich.

Beispiel-URLs, die vom regulären Ausdruck akzeptiert werden:

  • kategorie/foo /
  • category/foo_bar-baz /
  • kategorie/12345 /
  • category/q1e2_asdf /
20
ThiefMaster