Ich habe den folgenden regulären Ausdruck in meiner urls.py und möchte wissen, was das bedeutet. Speziell der (?P<category_slug>
Teil der Regex.
r'^category/(?P<category_slug>[-\w]+)/$
Antworten:
(?P<name>regex)
- Runde Klammern gruppieren den regulären Ausdruck zwischen ihnen. Sie erfassen den Text, der mit dem in ihnen enthaltenen regulären Ausdruck übereinstimmt, auf den der Name zwischen den scharfen Klammern verweist. Der Name kann aus Buchstaben und Ziffern bestehen.
Kopieren und einfügen von: http://www.regular-expressions.info/refext.html
In Django werden benannte Erfassungsgruppen als Schlüsselwortargumente an Ihre Ansicht übergeben.
Unbenannte Erfassungsgruppen (nur eine Klammer) werden als Argumente an Ihre Ansicht übergeben.
Das? P ist eine benannte Erfassungsgruppe im Gegensatz zu einer unbenannten Erfassungsgruppe.
http://docs.python.org/library/re.html
(?P<name>...)
Ähnlich wie bei regulären Klammern, aber der Teilstring, mit dem die Gruppe übereinstimmt, ist im Rest des regulären Ausdrucks über den symbolischen Gruppennamen zugänglich. Gruppennamen müssen gültige Python-Bezeichner sein, und jeder Gruppenname darf innerhalb eines regulären Ausdrucks nur einmal definiert werden. Eine symbolische Gruppe ist auch eine nummerierte Gruppe, als ob die Gruppe nicht benannt wäre. Daher kann die Gruppe mit dem Namen id im folgenden Beispiel auch als nummerierte Gruppe 1 bezeichnet werden.
(?P<category_slug>)
Erstellt eine Übereinstimmungsgruppe mit dem Namen category_slug
.
Der reguläre Ausdruck selbst entspricht einer Zeichenfolge, die mit category/
einer Mischung aus alphanumerischen Zeichen, dem Bindestrich -
und dem Unterstrich beginnt _
, gefolgt von einem abschließenden Schrägstrich.
Beispiel-URLs, die vom regulären Ausdruck akzeptiert werden:
re
Modul bietet Funktionen, die dem Ausdruck entsprechen. Sie geben ein Match-Objekt zurück, wenn der Text mit dem regulären Ausdruck übereinstimmt. Dann match.group('category_slug')
gibt den Inhalt der Gruppe ( 'foo'
, 'foo_bar-baz'
usw.).
Neu in Version 3.6.
(?P<name>...)
Ähnlich wie bei normalen Klammern, jedoch ist der von der Gruppe übereinstimmende Teilstring über den symbolischen Gruppennamen zugänglich. Gruppennamen müssen gültige Python-Bezeichner sein, und jeder Gruppenname darf innerhalb eines regulären Ausdrucks nur einmal definiert werden. Eine symbolische Gruppe ist auch eine nummerierte Gruppe, als ob die Gruppe nicht benannt wäre.
Kopieren Einfügen aus Python3Regex
Verwenden Sie beim Mustervergleich dieses Muster zum Übergeben von Zeichenfolgen
(?P<username2>[-\w]+)
Dies für den Interger-Wert
(?P<user_id>[0-9]+)
category_slut