我有这个网址
http://download2142.mysite.com/d0kz4p5p3uog/api60w0g1o1jil1/upload.rar
下载后的数字'是随机生成的,并且是在mysite.com'之后的那两个目录。获取每个文件的随机字符串。
我已尝试使用(\.rar$)
查找文件扩展名以下载该文件,但问题是该页面上还有其他链接,其中的网址以.rar文件结尾,并非实际下载链接。因此,通过扩展程序查找下载链接对此没有帮助。我需要一个类似下面的模式。
http://download\[random_no_here\].mysite.com/\[randomstring_number_included here/\[another_randomstring_with_number_included_here/the_actual_file_here_with_random_name.rar
答案 0 :(得分:0)
这个正则表达式会做你想要的:
r'http://download\d+\.mysite\.com/\w+/\w+/upload\.rar'
\d
匹配数字,\w
匹配字母数字(包括下划线); +
表示匹配前一个模式中的一个或多个。我们在\
和.com
前面使用.rar
,以便.
按字面解释,而不是正则表达式通配符。
<强>测试强>
import re
p = re.compile(r'http://download\d+\.mysite\.com/\w+/\w+/upload\.rar')
table = [
'http://download2142.mysite.com/d0kz4p5p3uog/api60w0g1o1jil1/upload.rar',
'http://download2142.mysite.com/d0kz4p5p3uog/api60w0g1o1jil1/upload.raw',
'http://download123.mysite.com/456/789/upload.rar',
'http://downloadabc.mysite.com/def/ghi/upload.rar',
'http://download1234.mysite.com/def/ghi/upload.rar',
'http://download1234.mysite.org/def/ghi/upload.rar',
]
for s in table:
m = p.match(s)
print s, m is not None
<强>输出强>
http://download2142.mysite.com/d0kz4p5p3uog/api60w0g1o1jil1/upload.rar True
http://download2142.mysite.com/d0kz4p5p3uog/api60w0g1o1jil1/upload.raw False
http://download123.mysite.com/456/789/upload.rar True
http://downloadabc.mysite.com/def/ghi/upload.rar False
http://download1234.mysite.com/def/ghi/upload.rar True
http://download1234.mysite.org/def/ghi/upload.rar False
如果实际文件名不同,则可以使用
r'http://download\d+\.mysite\.com/\w+/\w+/\w+\.rar'
或
r'http://download\d+\.mysite\.com/\w+/\w+/[a-z]+\.rar'
如果名称将始终为小写字母