Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 将正则表达式组合到可选组中_Regex_Django Urls - Fatal编程技术网

Regex 将正则表达式组合到可选组中

Regex 将正则表达式组合到可选组中,regex,django-urls,Regex,Django Urls,我有4个正则表达式目前正在工作,但我想把它们合并成1个正则表达式,因为有很多类似的元素,这可能是更好的做法。这是在django url.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-]+

我有4个正则表达式目前正在工作,但我想把它们合并成1个正则表达式,因为有很多类似的元素,这可能是更好的做法。这是在django url.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>.+)/([0-9]+/(attachment/([0-9]+/)?)?)?$
^news/(?P.+)/([0-9]+/(附件/([0-9]+/)?)$

请参见

刚刚尝试过,它仍然只与最后一个匹配。我为每个正则表达式添加了一个示例description@stray它对我有用。请参阅演示链接。此外,您的示例与原始问题不同-它们的前面有
“…”
,因此演示链接在前面使用
*
,在开始时模仿“任何东西”。除此之外,您的所有示例都与原始正则表达式匹配。稍微修改一下,最终工作版本是^news/(?P[a-z0-9-]+)/([0-9]+/(附件/[0-9]+/|[0-9]+/)?$谢谢。Slug不应该是.+并且需要使用|
/news/some-slug/1231/attachment/1231
/news/some-slug/123121/1231/
/news/some-slug/1312/
/news/some-slug/
^news/(?P<slug>.+)/([0-9]+/(attachment/([0-9]+/)?)?)?$