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

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

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

4 ответа

Решение

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

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

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

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

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

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

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

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

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

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

  • категория / Foo /
  • категория /foo_bar-Baz/
  • категория /12345/
  • категория /q1e2_asdf/

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

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

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

При сопоставлении с образцом используйте этот образец для передачи строки

(?P<username2>[-\w]+)

Это для целого числа

(?P<user_id>[0-9]+)
Другие вопросы по тегам