匹配替代网址 - 正则表达式django网址

时间:2009-10-01 21:37:31

标签: python regex django django-urls

我想要一个只有2个替代/module/in//module/out/

的Django网址

我正在使用

url(r'^(?P<status>\w+[in|out])/$', 
'by_status', 
name='module_by-status'),

但它与/module/i//module/n//module/ou/等其他模式相匹配。

赞赏任何提示:)

2 个答案:

答案 0 :(得分:9)

尝试r'^(?P<status>in|out)/$'

您需要删除\w+,其中包含一个或多个字母数字字符或下划线。 bstpierre答案中建议的正则表达式'^(?P<status>\w+(in|out))/$'将匹配helloingood_byeout等等。

当我最初在2009年写这个答案时,Django无法反转使用管道符|的正则表达式。但是从那以后,这个限制已被删除。 1.4 docs中提到了限制,但1.5 docs没有提到,因此我假设它在Django 1.5中已更改。

答案 1 :(得分:1)

你想要(in | out),你正在使用的[]表示一个包含字符'i','n','|','o','u','t'的字符类。