我需要得到所有的媒体扩展名为(.png,.jpg,.mp4,.avi,.flv)的文件在一个列表中使用正则表达式。什么我已经试过了
import re
st = '''
/mnt/data/Content:
ManifestFile.txt kompass-tags_e2d5dac5ba548a1206b5d40f58e448e4 tmp_content
default_55a655f340908dce55d10a191b6a0140 price-tags_b3c756dda783ad0691163a900fb5fe15
/mnt/data/Content/default_55a655f340908dce55d10a191b6a0140:
LayoutFile_34450b33c8b44af409abb057ddedfdfe.txt blank_decommissioned.jpeg tmp_content
ManifestFile.txt blank_unregistered.png
/mnt/data/Content/default_55a655f340908dce55d10a191b6a0140/tmp_content:
/mnt/data/Content/kompass-tags_e2d5dac5ba548a1206b5d40f58e448e4:
0001111084948-kompass-LARGE.avi 0076738703404-kompass-LARGE.png LayoutFile_7c1b3793e49204982e0e41923303c17b.txt
0001111087321-kompass-LARGE.jpg 0076738703419-kompass-LARGE.mp4 ManifestFile.txt
0001111087325-kompass-LARGE.png 0076738703420-kompass-LARGE.png tmp_content
/mnt/data/Content/kompass-tags_e2d5dac5ba548a1206b5d40f58e448e4/tmp_content:
/mnt/data/Content/price-tags_b3c756dda783ad0691163a900fb5fe15:
0001111084948-consumer-large.png 0076738703404-consumer-large.png LayoutFile_a694b1e05d08705aaf4dd589ac61d493.txt
0001111087321-consumer-large.png 0076738703419-consumer-large.avi ManifestFile.txt
0001111087325-consumer-large.mp4 0076738703420-consumer-large.png tmp_content
/mnt/data/Content/price-tags_b3c756dda783ad0691163a900fb5fe15/tmp_content:
/mnt/data/Content/tmp_content:
'''
patt = '^.*(.png|.jpg|.gif|.bmp|.jpeg|.mp4|.avi|.flv)'
patt = '^.*$.png'
fList = re.findall(patt, st)
print fList
我对正则表达式知之甚少请帮忙。你知道吗
试试这个:
[^ \n]
是一个取反字符类,不允许空格或换行符。你知道吗点(
.
)是一个特殊字符,需要用反斜杠转义。你知道吗在线试用here。你知道吗
^.*(.png|.jpg|.gif|.bmp|.jpeg|.mp4|.avi|.flv)
模式匹配字符串的开头,然后尽可能多地匹配除换行符以外的任何0+字符,然后匹配前面有任何单个字符的扩展名(未转义的.
匹配除换行符以外的任何字符)。所以,这不适用于您,因为这里的.
匹配太多,而^
只在字符串开头产生匹配。你知道吗^.*$.png
模式只匹配字符串的开头,除换行符以外的任何0+字符,然后匹配字符串的结尾和任何字符+png
-这是一种永远不会匹配任何字符串的模式。你知道吗从你的描述来看你需要
参见regex demo。你知道吗
细节
\S+
-1+非空白字符\.
-文字点(?:png|jpe?g|gif|bmp|mp4|avi|flv)
-与上述任何扩展名匹配的非捕获组(即,它捕获的内容不会是re.findall
返回的列表的一部分)\b
-单词边界(实际上,它是可选的,但它会确保您将上面的扩展名作为一个完整的单词进行匹配)。你知道吗参见Python demo:
屈服
您可以使用RegEx ^{}
\S+
匹配任何非空白字符至少一次\.
匹配一个点(?: ... )
是非捕获组(png|jpg|gif|bmp|jpeg|mp4|avi|flv
匹配您定义的扩展Demo.
相关问题 更多 >
编程相关推荐