繁体   English   中英

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

[英]Python - Regex findall repeated pattern followed by variable length of chars

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

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

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

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

除了最后一个之外,它找到了所有。


编辑1:

我已经采取@anubhava的答案,稍微进一步解决相同的问题,但使用动态分隔符,使用\\d[AZ]{3}\\d{3}而不是1MHG161

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

您可以使用:

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

Lookahead (?=1MHG161|$)将在匹配后匹配1MHG161或行尾锚$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM