在 Django 中使用 Python 正则表达式

Posted

技术标签:

【中文标题】在 Django 中使用 Python 正则表达式【英文标题】:Using Python Regular Expression in Django 【发布时间】:2010-12-09 19:48:53 【问题描述】:

我有一个网址:

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

我希望能够使用正则表达式将 CompanyA 传递给视图。

这就是我所拥有的:

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

它不匹配。

理想情况下,所有看起来像 example.com/org/X 的 URL 都会将 x 传递给视图。

提前致谢!

【问题讨论】:

【参考方案1】:

您需要将组名括在括号中。命名组的语法是(?P&lt;name&gt;regex),而不是?P&lt;name&gt;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&lt;company_name&gt;\w+)'

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

【讨论】:

以上是关于在 Django 中使用 Python 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

使用 django 将 Python 正则表达式转换为路径时遇到问题

Python之路Day18-正则及Django

Python之路-(js正则表达式前端页面的模板套用Django基础)

Python中的正则表达式

python django 配置文件和url参数配置

你可以在 Django 模板条件中使用正则表达式吗?