Python - 正则表达式查找所有重复模式,后跟可变长度的字符

标签 python regex

我有以下模式:
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/

相关文章:

java - 如何使用 REGEX 找到交替的 1 和 0

javascript - 在较大的正则表达式中使用一组括号进行多次捕获

jquery - 重复的正则表达式组

python - 用 Python 解析 90MB 的数据存档

python - Matplotlib 错误会导致内存泄漏。我怎样才能释放那段内存?

Python 多处理不在 Fedora 中创建新进程

检查用户的输入是 C 中的 url 吗?

javascript - freemarker 替换 & 和 &

python - 在 Python 中使用 __getattribute__ 或 __getattr__ 调用方法

python - extract 如何从 pdf 文件中提取特定文本 - python