在Django中使用Python正则表达式

10 投票
3 回答
22215 浏览
提问于 2025-04-15 15:21

我有一个网址:

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

我想通过正则表达式把CompanyA传递给一个视图。

这是我现在的代码:

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

但是它没有匹配成功。

理想情况下,所有看起来像example.com/org/X的链接都应该把X传递给视图。

提前谢谢你们!

3 个回答

1

它应该更像是 r'^org/(?P<company_name>\w+)'

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

你的正则表达式不太对。它应该像这样:

r'^org/(?P<company_name>\w+)/$'
20

你需要把组名用括号括起来。命名组的写法是 (?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'}

撰写回答