我正在尝试从以下字符串中提取文件名:
s = '[download] /tmp/743979_file.mp4 has already been downloaded'
这是我到目前为止所做的:
>>> re.search(r'(\s).+_file[^\s]+', s).group()
' /tmp/743979_file.mp4'
如何在第一个空格之后,第二个空格之前,包含单词_file
?
答案 0 :(得分:3)
使用\S
匹配任何非空格字符。因此\S*
将匹配零个或多个非空格字符。 \s
只是\S
的反面,其中\s
匹配任何类型的空格字符,\S
匹配任何类型的非空格字符。
>>> s = '[download] /tmp/743979_file.mp4 has already been downloaded'
>>> re.search(r'(?<=\s)\S*_file\S*', s).group()
'/tmp/743979_file.mp4'
OR
简单地,
>>> re.search(r'\S*_file\S*', s).group()
'/tmp/743979_file.mp4'
或强>
>>> s = '[download] /tmp/743979_file.mp4 has already been downloaded'
>>> m = s.split()[1]
>>> if '_file' in m:
print(m)
/tmp/743979_file.mp4
答案 1 :(得分:2)
另一个简单的解决方案可能是使用split
:
print '[download] /tmp/743979_file.mp4 has already been downloaded'.split()[1]