将一行中的条目提取到Python Regex中的列表中

时间:2016-06-17 06:18:54

标签: python regex

我有以下字符串:

myst="Cluster 2 0     13aa,>FZGRY:07872:11201...*1    13aa,>FZGRY:08793:13012...at100.00%2    13aa,>FZGRY:04065:08067...at100.00%"

我想要的是提取由>...限定的内容。进入清单。 得到以下特性:

['FZGRY:07872:11201','FZGRY:08793:13012', 'FZGRY:04065:08067']

但为什么这条线不起作用:

import re
mem = re.findall(">(.*)\.\.\.",myst)
mem

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

你可以使用环顾四周来做这件事。

>>> re.findall(r'(?<=>)[^.]+(?=[.]{3})', myst)
['FZGRY:07872:11201', 'FZGRY:08793:13012', 'FZGRY:04065:08067']

<强>正则表达式

  • (?<=>)积极展望。检查字符串是否以>

  • 开头
  • [^.]+匹配.以外的任何内容,+匹配一个或多个。

  • (?=[.]{3})积极向前看。检查匹配的字符串是否后跟...

你的正则表达式出了什么问题?

  • >(.*)\.\.\.此处.*贪婪,并会尝试尽可能匹配。最后添加?以使其不贪婪。

    >>> re.findall(">(.*?)\.\.\.",myst)
    ['FZGRY:07872:11201', 'FZGRY:08793:13012', 'FZGRY:04065:08067']