что означает это регулярное выражение django?`? P` - PullRequest
63 голосов
/ 03 ноября 2011

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

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

Ответы [ 4 ]

67 голосов
/ 03 ноября 2011

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

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

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

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

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

49 голосов
/ 03 ноября 2011

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

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

20 голосов
/ 03 ноября 2011

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

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

Примеры URL-адресов, принятых регулярным выражением:

  • category / foo /
  • category / foo_bar-baz /
  • категория / 12345 /
  • категория / q1e2_asdf /
0 голосов
/ 20 мая 2018

Новое в версии 3.6.

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

копировать вставить из Python3Regex

...