我有以下字符串:
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
这样做的正确方法是什么?
答案 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']