您需要使用
re.search(),不
re.match()。
re.search()匹配字符串中的任何地方,而
re.match()仅匹配开头。
import refn_list = ['IMG_0064.png','IMG_0064.JPG','IMG_0064_1.JPG','IMG_0064_2.JPG','IMG_0064_2.PNG','IMG_0064_2.BMP','IMG_0064_3.JPEG','IMG_0065.JPG','IMG_0065.JPEG','IMG-20150623-00176-preview-left.jpg','IMG-20150623-00176-preview-left_2.jpg','thumb_2595.bmp','thumb_2595_1.bmp','thumb_2595_15.bmp']pattern = re.compile(r'(d|t)(_d+){1}.', re.IGNORECASE)for line in fn_list: search_obj = re.search(pattern, line) # CHANGED HERE if search_obj: matching_group = search_obj.groups() print matching_group
结果:
('4', '_1')('4', '_2')('4', '_2')('4', '_2')('4', '_3')('t', '_2')('5', '_1')('5', '_15')
由于您要编译正则表达式,因此可以
search_obj = pattern.search(line)代替
search_obj =re.search(pattern,line)。至于您的正则表达式本身,
r'([dt])(_d+).'它等同于您正在使用的正则表达式,并且更加简洁。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)