can';t使用Python和re从列表中提取特定模式

can';t使用Python和re从列表中提取特定模式,python,regex,Python,Regex,我有一系列列表,其中包含以下类型的值: ('CDI - AB - MO - id3 - Mobile', '2018-01-12', '48,67') 我只对以“id”开头的值加上后面的数字感兴趣 例如,我想从这个列表中提取“id3” ('CDI - AB - MO - id3 - Mobile', '2018-01-12', '48,67') 或来自 多亏了re库,我正努力实现这一目标 这是我的密码: matchObj = re.search( r'id*', my_list, re.M

我有一系列列表,其中包含以下类型的值:

('CDI - AB - MO - id3 - Mobile', '2018-01-12', '48,67')
我只对以“id”开头的值加上后面的数字感兴趣

例如,我想从这个列表中提取“id3”

('CDI - AB - MO - id3 - Mobile', '2018-01-12', '48,67') 
或来自

多亏了re库,我正努力实现这一目标

这是我的密码:

matchObj = re.search( r'id*', my_list, re.M|re.I)
您有什么建议可以帮助返回所需的值吗


谢谢

您可以使用正则表达式模式:

\bid\d+\b
  • \b
    匹配单词结尾的空字符串(零宽度)

  • id
    macthes
    id

  • \d+
    匹配一个或多个数字


示例:

In [113]: t1 = ('CDI - AB - MO - id3 - Mobile', '2018-01-12', '48,67')

In [114]: t2 = ('CDI - AC - MO - id33 - Mobile', '2018-01-12', '48,67')

In [115]: pat = re.compile(r'\bid\d+\b')

In [119]: [pat.search(i).group() for i in t1 if pat.search(i)]
Out[119]: ['id3']

In [120]: [pat.search(i).group() for i in t2 if pat.search(i)]
Out[120]: ['id33']
In [113]: t1 = ('CDI - AB - MO - id3 - Mobile', '2018-01-12', '48,67')

In [114]: t2 = ('CDI - AC - MO - id33 - Mobile', '2018-01-12', '48,67')

In [115]: pat = re.compile(r'\bid\d+\b')

In [119]: [pat.search(i).group() for i in t1 if pat.search(i)]
Out[119]: ['id3']

In [120]: [pat.search(i).group() for i in t2 if pat.search(i)]
Out[120]: ['id33']