因此,我目前正在开发一个 Web 应用程序,该应用程序将恶意软件文件的位置作为其中一项功能的输入。
这是通过 View 文件传递的。但是,在对应用程序的模型部分进行了一些更改后,我发现它无法解析完整的文件路径。
下面的代码适用于以下 pcap 作为输入:
8cdddcd3-35fa-468d-8647-816518a9836a435be1c6e904836ad65f97f3eac4cbe19ee7ba0da48178fc7f00206270469165.pcap
url(r'^analyse/(?P<pcap>[\w\-]+\.pcap)$', views.analyse, name='analyse'),
但是,当它是包含完整文件路径的 pcap 时,此代码不再有效。
/home/freddie/malwarepcaps/8cdddcd3-35fa-468d-8647-816518a9836a435be1c6e904836ad65f97f3eac4cbe19ee7ba0da48178fc7f0020626504p6
非常感谢有关我将如何更改正则表达式以适应传递给路由的字符串中的完整文件路径的任何建议或指示。
最佳答案
正则表达式:((/\w+?)+/)?([\w-]+\.pcap)
Django 正则表达式:^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
)移动到查询字符串(对于 GET 请求)或 http-body (对于 POST 请求)中
所以在没有url匹配的情况下更容易获得参数
关于regex - 调整 Django URL 中的正则表达式以匹配文件路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50200357/