Использование регулярного выражения Python в Django - PullRequest
10 голосов
/ 25 октября 2009

У меня есть веб-адрес:

http://www.example.com/org/companyA

Я хочу иметь возможность передать CompanyA в представление с помощью регулярных выражений.

Вот что у меня есть:

(r'^org/?P<company_name>\w+/$',"orgman.views.orgman")

и оно не совпадает.

В идеале все URL, которые выглядят как example.com/org/X, передали бы представление х.

Заранее спасибо!

Ответы [ 3 ]

19 голосов
/ 25 октября 2009

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

С помощью интерпретатора Python легко проверить соответствие регулярных выражений, например:

>>> import re
>>> re.match(r'^org/?P<company_name>\w+/$', 'org/companyA')
>>> re.match(r'^org/(?P<company_name>\w+)/?$', 'org/companyA')
<_sre.SRE_Match object at 0x10049c378>
>>> re.match(r'^org/(?P<company_name>\w+)/?$', 'org/companyA').groupdict()
{'company_name': 'companyA'}
2 голосов
/ 25 октября 2009

Ваше регулярное выражение недействительно. Вероятно, это должно выглядеть как

r'^org/(?P<company_name>\w+)/$'
1 голос
/ 25 октября 2009

Это должно выглядеть больше как r'^org/(?P<company_name>\w+)'

>>> r = re.compile(r'^org/(?P<company_name>\w+)')
>>> r.match('org/companyA').groups()
('companyA',)
...