2013-02-11 2 views
3
urlpatterns = patterns('basic.blog.views', 
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{1,2})/(?P<slug>[-\w]+)/$', 
     view='post_detail', 
     name='blog_detail' 
    ), 

что такое [-\w]+ в (?P<slug>[-\w]+) соответствие? В частности, что соответствует тире и квадратным скобкам?Что означает [- w] + в регулярном выражении python?

+2

'[- \ w] +' соответствует одному или нескольким символам слова или тире (эквивалентно '[a-zA-Z0-9 _-] +'; '? P ' является [именем группы захвата] (http://www.regular-expressions.info/named.html). – NullUserException

ответ

7

[-\w] говорит, что либо символ слова (A-Za-z0-9_), либо черта (-) могут туда попасть.

Вот очень хороший сайт, который расскажет вам, что именно ваше регулярное выражение делает:. http://www.regex101.com/r/cJ2zT8

0

квадратные скобки создать «класс символов», что означает «матч против любого из символов между этими квадратными скобками В вашей case, это буквальный символ - или любой символ слова - A-Z, a-z, 0-9, или _. В этом случае + означает «соответствие одному или нескольким из предыдущего класса символов». Это означает, что вы соответствуете строкам, которые содержат один или больше символов из набора A-Za-z0-9_-.

+1

'\ w' также содержит 0-9 цифр. – NullUserException

+0

Вы правы - печатайте, не думая! –

Смежные вопросы