无法使用Python和re从列表中提取特定模式

时间:2018-01-14 11:47:05

标签: python regex

我有一堆包含这些类型值的列表:

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

我只对以“id”开头的值加上跟随它的数字感兴趣。

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

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

或“id33”

('CDI - AC - MO - id33 - Mobile', '2018-01-12', '48,67')

由于re库

,我正在努力实现这一目标

这是我的代码:

matchObj = re.search( r'id*', my_list, re.M|re.I)

您是否有任何建议可以帮助返回所需的值?

由于

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式:

\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']