regex 按换行符分组并执行正则表达式

mspsb9vt  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(78)

我从一个连接器收到一个非常特定的字符串格式:

{#{123}#};{#{abc}#}\n{#{345}#};{#{def}#}\n{#{789}#};{#{ghi}#}

我不能改变这种格式。目前,我使用正则表达式(?s){#{(.*?)}#}
有没有可能把输出按行分组?比如[("123", "abc"), ("345", "def"), ("789", "ghi")]-我知道我也可以在python中使用split。有没有正则表达式的方法?我试了一下www.regex101.com,但是没有找到解决方案。

vwkv1x7d

vwkv1x7d1#

由于每行都有匹配对,因此可以捕获它们:

re.findall(r'{#{(.*?)}#};{#{(.*?)}#}', text)

请参阅Python demo
输出量:

[('123', 'abc'), ('345', 'def'), ('789', 'ghi')]

请注意,不应使用(?s) DOTALL内联标志,因为它会使.跨行匹配。

相关问题