匹配网址正则表达式中的文件路径

伊万·塞莫奇金(Ivan Semochkin)

我需要匹配图像的路径:
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])

所以我有images05a813eb-df00-4ed6-b8a5-2930f03fbf5djpg我的网址模式:

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+)  

但不匹配,请帮助我找到解决方案。

威克多·斯特里比尤(WiktorStribiżew)

您可以使用

^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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式匹配网址

来自分类Dev

正则表达式以匹配网址中的空格

来自分类Dev

Django中匹配网址的正则表达式

来自分类Dev

正则表达式以匹配网址中的多个单词

来自分类Dev

如何制作正则表达式以匹配文件路径?

来自分类Dev

正则表达式匹配路径

来自分类Dev

正则表达式以匹配文件夹结构中的有效路径

来自分类Dev

正则表达式匹配路径中的文件名

来自分类Dev

文件路径中的正则表达式

来自分类Dev

HTML文件中的Python正则表达式匹配

来自分类Dev

正则表达式以匹配CSS文件中的ID?

来自分类Dev

正则表达式以匹配网址格式

来自分类Dev

如何匹配此网址的正则表达式?

来自分类Dev

匹配基本网址正则表达式

来自分类Dev

网址匹配时的正则表达式差异

来自分类Dev

匹配CSS网址的正则表达式

来自分类Dev

javascript正则表达式匹配网址

来自分类Dev

正则表达式的图片匹配网址

来自分类Dev

正则表达式右匹配网址,以DOT结尾

来自分类Dev

匹配基本网址正则表达式

来自分类Dev

如何将网址与正则表达式匹配?

来自分类Dev

如何匹配此网址的正则表达式?

来自分类Dev

正则表达式:匹配网址中间的字符

来自分类Dev

正则表达式以匹配网址格式

来自分类Dev

与目录路径(文件路径除外)匹配的正则表达式

来自分类Dev

网址重写正则表达式以匹配某些经典ASP文件(但不是全部)

来自分类Dev

正则表达式以匹配没有匹配文件名的url目录路径

来自分类Dev

URL将匹配的正则表达式重写为“?” 在网址中

来自分类Dev

正则表达式可以选择与网址中的端口号匹配