我有以下模式:
1MHG161 xxxxxxxxxxxxx 1MHG161 xxx
其中xxxx
是字符和空格的可变长度。
我正在 try catch 每一个并获得以下预期输出:
['1MHG161 xxxxxxxxxxxxx','1MHG161 xxx']
我尝试了很多组合,这是最后一个
messages_strings = re.findall("(1MHG161.+?)(?=1MHG161)",content)
这会找到除最后一个之外的所有内容。
<小时/>编辑1:
我已经采取了@anubhava的答案,进一步解决了同样的问题,但是使用动态分隔符,使用 \d[A-Z]{3}\d{3}
而不是 1MHG161
这可能会帮助人们使用 EDI 解析器。
最佳答案
您可以使用:
>>> re.findall(r"(1MHG161.+?)(?=1MHG161|$)", content)
['1MHG161 xxxxxxxxxxxxx ', '1MHG161 xxx']
Lookahead (?=1MHG161|$)
将在匹配后匹配 1MHG161
或行尾 anchor $
。
关于Python - 正则表达式查找所有重复模式,后跟可变长度的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39063200/