在Django URL中调整正则表达式以匹配文件路径

问题描述 投票:4回答:1

所以我目前正在开发一个Web应用程序,它将其中一个函数的恶意软件文件的位置作为输入。

这是通过views文件传递的。但是,在对应用程序的模型部分进行一些更改之后,我发现它无法解析完整的文件路径。

以下代码适用于以下pcap作为输入:

8cdddcd3-35fa-468d-8647-816518a9836a435be1c6e904836ad65f97f3eac4cbe19ee7ba0da48178fc7f00206270469165.pcap

         url(r'^analyse/(?P<pcap>[\w\-]+\.pcap)$', views.analyse, name='analyse'),

但是,当它是包含完整文件路径的pcap时,此代码不再有效。

/home/Freddie/malware PCA PS/8CD短的CD3-35发-468的-8647-816518啊9836啊435不饿1从6哦904836阿德65发97发3EA称4成本额19哦哦7把0大48178非常7发00206270469165.PC AP

关于我将如何改变正则表达式以适应传递给路由的字符串中的完整文件路径的任何建议或指示将非常感激。

regex django python-3.x django-urls
1个回答
2
投票

正则表达式:((/\w+?)+/)?([\w-]+\.pcap)

django regex:^analyse(?P<pcap>((/\w+?)+/)?([\w-]+\.pcap))$

请注意,在analyse之后没有斜线,因为它现在是pcap的一部分。

所以analyse/home/freddie/malwarepcaps/foo-bar.pcap应该匹配这种模式,pcap将等于/home/freddie/malwarepcaps/foo-bar.pcap

测试:

https://pythex.org/?regex=((%2F%5Cw%2B%3F)%2B%2F)%3F(%5B%5Cw-%5D%2B%5C.pcap)&test_string=8cdddcd3-35fa-468d-8647-816518a9836a435be1c6e904836ad65f97f3eac4cbe19ee7ba0da48178fc7f00206270469165.pcap%20%0A%2Fhome%2Ffreddie%2Fmalwarepcaps%2F8cdddcd3-35fa-468d-8647-816518a9836a435be1c6e904836ad65f97f3eac4cbe19ee7ba0da48178fc7f00206270469165.pcap&ignorecase=0&multiline=0&dotall=0&verbose=0

PS:我认为最好将这样的参数(路径 - /home/f/m/f.pcap)移动到querystring(用于GET请求)或移入http-body(用于POST请求),这样在没有url匹配的情况下获取param会更容易

© www.soinside.com 2019 - 2024. All rights reserved.