如何在第一个终端站点停止re.finditer

时间:2011-12-10 22:01:21

标签: python regex

考虑代码

 import re        
    mystring = 'XYZABCDEGHIJEGIJKLMNEPABCFGDEQRST'
    print re.finditer[start.start():end.start()] for start in re.finditer('(?=A)',mystring) for end in re.finditer('(?=E)',mystring) if end.start()>start.start()]

返回输出: -

ABCDE , ABCDEGHIJE , ABCDEGHIJEGIJKLMNE , ABCFGDE.  

我想让发现者在第一个E停下来  拿出输出

ABCDE and ABCFGDE

如何做到

1 个答案:

答案 0 :(得分:1)

我想你想要所有字符串的最短匹配以A开头并以E结尾。你可以使用正则表达式'A。*?E'来做到这一点:而不是像'A. * E'那样贪婪找到最小的匹配。您可以使用findall而不是finditer来获取匹配的字符串。总的来说,你有这样的代码:

print re.findall('A.*?E', mystring)