您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

正则表达式在Pythex上运行良好,但在Python中却无法正常运行

正则表达式在Pythex上运行良好,但在Python中却无法正常运行

您需要使用re.search(),不re.match()re.search()匹配字符串中的任何地方,而re.match()仅匹配开头。

import re

fn_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+)\.'它等同于您正在使用的正则表达式,并且更加简洁。

python 2022/1/1 18:26:24 有473人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶