【问题标题】:Using Python Regular Expression in Django在 Django 中使用 Python 正则表达式
【发布时间】:2025-11-30 20:10:01
【问题描述】:
我有一个网址:
http://www.example.com/org/companyA
我希望能够使用正则表达式将 CompanyA 传递给视图。
这就是我所拥有的:
(r'^org/?P<company_name>\w+/$',"orgman.views.orgman")
它不匹配。
理想情况下,所有看起来像 example.com/org/X 的 URL 都会将 x 传递给视图。
提前致谢!
【问题讨论】:
标签:
python
regex
django
django-urls
【解决方案1】:
您需要将组名括在括号中。命名组的语法是(?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】:
您的正则表达式无效。它应该看起来像
r'^org/(?P<company_name>\w+)/$'
【解决方案3】:
应该更像r'^org/(?P<company_name>\w+)'
>>> r = re.compile(r'^org/(?P<company_name>\w+)')
>>> r.match('org/companyA').groups()
('companyA',)