2014-02-03 2 views
1

Я иду через Джанго учебник по ссылке ниже:Что означают скобки в регулярном выражении?

https://docs.djangoproject.com/en/1.6/intro/tutorial03/ 

Вот регулярное выражение,

r'^(?P<poll_id>\d+)/$' 

Я не в состоянии понять, что скобка на самом деле означает? Может ли кто-нибудь описать меня в одной строке в хромом английском? :-)

+0

По этой ссылке вы цитируемого: ' Использование круглых скобок вокруг шаблона «захватывает» текст, соответствующий этому шаблону, и отправляет его в качестве аргумента функции просмотра. – devnull

+8

Этот вопрос не соответствует теме, потому что он не может прочитать руководство __referenced__. – devnull

+0

http://www.regular-expressions.info/named.html – Robin

ответ

4

(..) захватывает согласованную строку как группу.

>>> import re 
>>> matched = re.search(r'^(?P<poll_id>\d+)/$', '123/') 
>>> matched 
<_sre.SRE_Match object at 0x0000000002B3DB70> 

Вы можете получить его позже по номеру (номер группы начинают с 1) с использованием group method. ПРИМЕЧАНИЕ/ также соответствует шаблону, но не возвращается group(1), потому что он не записывается как группа.

>>> matched.group(1) 
'123' 

по имени (в случае, если вы использовали (?P<name>...) - названный захватывая группа):

>>> matched.group('poll_id') 
'123' 

Там также группа 0 - целостность в найденную строку:

>>> matched.group(0) 
'123/' 
>>> matched.group() 
'123/' 
+0

Скорее '(? P regex)' - группа захваченных имен, в отличие от неназванной группы захвата '(regex)' – nhahtdh

+0

и что такое "?" – Nabin

+0

@Nabin: '?' Является частью синтаксиса для группы захваченных имен. – nhahtdh

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