Подтвердить что ты не робот

Что означает это регулярное выражение django? `? P`

У меня есть следующее regex в моем urls.py, и я хотел бы знать, что это значит. В частности, часть (?P<category_slug> регулярного выражения.

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

4b9b3361

Ответ 1

(?P<name>regex) - Круглые скобки группируют регулярное выражение между ними. Они фиксируют текст, сопоставляемый регулярным выражением внутри них, на которое может ссылаться имя между острой скобкой. Имя может состоять из букв и цифр.

Скопировать пасту из: http://www.regular-expressions.info/refext.html

Ответ 2

В django названные группы захвата передаются вашему представлению в качестве аргументов ключевого слова.

Группы захвата без имени (только скобки) передаются вашему представлению в качестве аргументов.

"P" - это именованная группа захвата, в отличие от неназванной группы захвата.

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

(?P<name>...) Подобно обычным скобкам, но подстрока согласованный группой, доступен в пределах остальной части регулярного выражение через имя символьной группы. Имена групп должны быть действительны Идентификаторы Python, и каждое имя группы должно быть определено только один раз в пределах регулярного выражения. Символическая группа также является пронумерованной группы, как если бы группа не была названа. Таким образом, группа с именем id в в приведенном ниже примере также можно ссылаться как пронумерованная группа 1.

Ответ 3

(?P<category_slug>) создает группу соответствия с именем category_slug.

Само регулярное выражение соответствует строке, начинающейся с category/, а затем комбинации буквенно-цифровых символов, тире - и подчеркиванию _, а затем завершающей косой чертой.

Примеры URL, принятые регулярным выражением:

  • категория /Foo/
  • категория /foo _bar-Baz/
  • категория /12345/
  • категория /q 1e2_asdf/