web-dev-qa-db-fra.com

qu'est-ce que cela signifie Django regex signifie? `? P`

J'ai le regex suivant dans mon urls.py et j'aimerais savoir ce que cela signifie. Plus précisément, la partie (?P<category_slug> De l'expression régulière.

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

63
locoboy

(?P<name>regex) - Les parenthèses rondes regroupent l'expression régulière entre elles. Ils capturent le texte correspondant à l'expression régulière à l'intérieur d'eux qui peut être référencé par le nom entre les crochets pointus. Le nom peut être composé de lettres et de chiffres.

Copiez la pâte de: http://www.regular-expressions.info/refext.html

49
Marcus

Dans Django, les groupes de capture nommés sont passés à votre vue comme arguments de mots clés.

Les groupes de capture sans nom (juste une parenthèse) sont passés à votre vue comme arguments.

Le? P est un groupe de capture nommé, par opposition à un groupe de capture sans nom.

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

(?P<name>...) Similaire aux parenthèses régulières, mais la sous-chaîne mise en correspondance par le groupe est accessible dans le reste de l'expression régulière via le nom de nom du groupe symbolique. Les noms de groupe doivent être valides Python, et chaque nom de groupe ne doit être défini qu'une seule fois dans une expression régulière. Un groupe symbolique est également un groupe numéroté, comme si le groupe n'était pas nommé. le groupe nommé id dans l'exemple ci-dessous peut également être référencé comme le groupe numéroté 1.

67

(?P<category_slug>) crée un groupe de correspondance nommé category_slug.

L'expression régulière correspond à une chaîne commençant par category/ puis un mélange de caractères alphanumériques, le tiret - et le trait de soulignement _, suivi d'une barre oblique de fin.

Exemples d'URL acceptées par l'expression régulière:

  • catégorie/foo /
  • catégorie/foo_bar-baz /
  • catégorie/12345 /
  • catégorie/q1e2_asdf /
20
ThiefMaster