我有4个正在使用的正则表达式,但我想将它们组合成1个正则表达式,因为有很多相似的元素,这可能是更好的练习。这是在django urls.py
url(r'^news/(?P<slug>[a-z0-9-]+)/[0-9]+/attachment/[0-9]+/$',
url(r'^news/(?P<slug>[a-z0-9-]+)/[0-9]+/[0-9]+/$',
url(r'^news/(?P<slug>[a-z0-9-]+)/[0-9]+/$',
url(r'^news/(?P<slug>[a-z0-9-]+)/$',
这是我的尝试,但它只匹配前两个。
^news/(?P<slug>[a-z0-9-]+)/([0-9]+/(attachment/[0-9]+|[0-9]+)?)?/$
编辑: 每个正则表达式的例子
/news/some-slug/1231/attachment/1231
/news/some-slug/123121/1231/
/news/some-slug/1312/
/news/some-slug/
并且不匹配任何其他模式。
编辑:更新我的尝试,越来越近,只是不确定为什么?不应该使组成为可选的在http://www.pyregex.com/上进行测试