我需要匹配图像的路径:
images/05a813eb-df00-4ed6-b8a5-2930f03fbf5d.jpg
按dir,name和ext对其进行分割
def url(self, name):
prefix, _ = name.split('/')
file_name, ext = _.split('.')
return reverse('image_storage',
args=[prefix, file_name, ext])
所以我有images
,05a813eb-df00-4ed6-b8a5-2930f03fbf5d
,jpg
我的网址模式:
url(r'^img/(?P<prefix>\w+)/(?P<uuid4>[0-9a-f][0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.(?P<ext>\w+)
但不匹配,请帮助我找到解决方案。
您可以使用
^images/(?:(?P<prefix>\w+)/)?(?P<uuid4>[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12})\.(?P<ext>\w+)
之后的可选目录images/
与可选组匹配(?:(?P<prefix>\w+)/)?
。的?
量词匹配1点或0的出现。如果可以大于1,请使用*
代替?
(但我想您必须考虑正确的“前缀”组边界)。
另外,[0-9a-f][0-9a-f]{8}
在您的正则表达式中需要9个字符,但实际上有8个字符。
连续3个-[0-9a-f]{4}
可以缩小为另一个非捕获组(?:-[0-9a-f]{4}){3}
。
注意:最好在模式前面加上(?i)
(不区分大小写的修饰符):(?i)^images/(?:(?P<prefix>\w+)/)?(?P<uuid4>[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12})\.(?P<ext>\w+)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句