Python - 正则表达式找到重复的模式,然后是可变长度的字符

时间:2016-08-21 10:30:02

标签: python regex

我有以下模式:
1MHG161 xxxxxxxxxxxxx 1MHG161 xxx
其中xxxx是可变长度的字符&空格。

我试图抓住每一个并具有以下预期输出:
[ '1MHG161 xxxxxxxxxxxxx ' , '1MHG161 xxx' ]

我尝试了很多组合这是最后一个

messages_strings = re.findall("(1MHG161.+?)(?=1MHG161)",content)

这可以找到除最后一个之外的所有内容。

编辑1:

我已经采取了@anubhava的答案,进一步解决同样的问题,但使用动态分隔符,而不是使用\d[A-Z]{3}\d{3}代替1MHG161

这可以帮助使用EDI解析器的人。

1 个答案:

答案 0 :(得分:3)

您可以使用:

>>> re.findall(r"(1MHG161.+?)(?=1MHG161|$)", content)
['1MHG161  xxxxxxxxxxxxx  ', '1MHG161 xxx']
匹配后,

Lookahead (?=1MHG161|$)将匹配1MHG161或行结束$