正则表达式可以在Pythex上正常工作,但不能在Python中工作

鲍勃·迪伦

我在pythex上使用了以下正则表达式进行测试:

(\d|t)(_\d+){1}\.

它工作正常,我主要对第2组感兴趣。成功显示如下:

pythex演示

但是,我无法让Python真正向我显示正确的结果。这是MWE:

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.match(pattern, line)
    if search_obj:
        matching_group = search_obj.groups()
        print matching_group

输出为空。

但是,上面的pythex清楚地显示了每个返回的两个组,第二个应该存在并且产生了更多文件。我究竟做错了什么?

胞期

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式可以工作,但是不能在Python中工作吗?

来自分类Dev

为什么我的正则表达式可以在PHP中工作,但不能在JavaScript中工作?

来自分类Dev

为什么正则表达式可以在javascript中工作,但不能在ruby中工作?

来自分类Python

正则表达式可在python模拟器中工作,但不能在perl中工作

来自分类Dev

为什么我的正则表达式不能在c ++中工作,但可以在Python中工作?

来自分类Dev

正则表达式可在浏览器中工作,但不能在NodeJ中工作

来自分类Dev

正则表达式搜索可在Notepad ++中工作,但不能在cygwin grep中工作

来自分类Dev

正则表达式虽然在Javascript中工作,但不能在C#中工作

来自分类Dev

模块重新正则表达式可以在控制台窗口中按预期工作,但不能在“ eclipse”中工作

来自分类Dev

正则表达式可以在所有.net引擎中在线工作,而不能在Powershell中工作吗?

来自分类Dev

正则表达式不能在.Net中正常工作

来自分类Dev

为什么角度模式正则表达式不能在typecrip中正常工作在html中

来自分类Dev

正则表达式可在Shell中工作,但不能通过Perl脚本工作

来自分类Dev

我的正则表达式可以在regex101上使用,但不能在python中使用?

来自分类Dev

为什么正则表达式不能正常工作?

来自分类Dev

正则表达式'^ [abc] + $'不能正常工作

来自分类Dev

正则表达式不能完全正常工作

来自分类Dev

正则表达式可以独立工作,但不能与strsplit一起使用

来自分类Dev

正则表达式与 sed 不能正常工作,但在 regex101 中工作

来自分类Dev

为什么此正则表达式在Vim中不能在SublimeText中工作?

来自分类Dev

正则表达式不能在asp.net(.aspx页)中工作

来自分类Dev

为什么正则表达式不能在Pywinauto中很好地工作

来自分类Java

为什么此正则表达式不能在Java中按预期工作?

来自分类Dev

简单的正则表达式/:[az] + /不能在javascript中按预期工作

来自分类Dev

Python正则表达式可在线运行,但不能在代码中运行

来自分类Dev

正则表达式在iOS上无法正常工作

来自分类Dev

正则表达式与Windows上的文本不匹配,在Mac上可以正常工作

来自分类Dev

正则表达式匹配器可以在JUnit上运行,但不能在Servlet容器上运行

来自分类Dev

为什么此正则表达式可以在Ubuntu上通过但不能在Mac OS X上通过

Related 相关文章

  1. 1

    正则表达式可以工作,但是不能在Python中工作吗?

  2. 2

    为什么我的正则表达式可以在PHP中工作,但不能在JavaScript中工作?

  3. 3

    为什么正则表达式可以在javascript中工作,但不能在ruby中工作?

  4. 4

    正则表达式可在python模拟器中工作,但不能在perl中工作

  5. 5

    为什么我的正则表达式不能在c ++中工作,但可以在Python中工作?

  6. 6

    正则表达式可在浏览器中工作,但不能在NodeJ中工作

  7. 7

    正则表达式搜索可在Notepad ++中工作,但不能在cygwin grep中工作

  8. 8

    正则表达式虽然在Javascript中工作,但不能在C#中工作

  9. 9

    模块重新正则表达式可以在控制台窗口中按预期工作,但不能在“ eclipse”中工作

  10. 10

    正则表达式可以在所有.net引擎中在线工作,而不能在Powershell中工作吗?

  11. 11

    正则表达式不能在.Net中正常工作

  12. 12

    为什么角度模式正则表达式不能在typecrip中正常工作在html中

  13. 13

    正则表达式可在Shell中工作,但不能通过Perl脚本工作

  14. 14

    我的正则表达式可以在regex101上使用,但不能在python中使用?

  15. 15

    为什么正则表达式不能正常工作?

  16. 16

    正则表达式'^ [abc] + $'不能正常工作

  17. 17

    正则表达式不能完全正常工作

  18. 18

    正则表达式可以独立工作,但不能与strsplit一起使用

  19. 19

    正则表达式与 sed 不能正常工作,但在 regex101 中工作

  20. 20

    为什么此正则表达式在Vim中不能在SublimeText中工作?

  21. 21

    正则表达式不能在asp.net(.aspx页)中工作

  22. 22

    为什么正则表达式不能在Pywinauto中很好地工作

  23. 23

    为什么此正则表达式不能在Java中按预期工作?

  24. 24

    简单的正则表达式/:[az] + /不能在javascript中按预期工作

  25. 25

    Python正则表达式可在线运行,但不能在代码中运行

  26. 26

    正则表达式在iOS上无法正常工作

  27. 27

    正则表达式与Windows上的文本不匹配,在Mac上可以正常工作

  28. 28

    正则表达式匹配器可以在JUnit上运行,但不能在Servlet容器上运行

  29. 29

    为什么此正则表达式可以在Ubuntu上通过但不能在Mac OS X上通过

热门标签

归档