python多行正则表达式查找

2024-06-01 06:39:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用分隔符在多行文本中找到多个匹配项,以停止在python中使用regex进行搜索。。。如果我需要的都在同一行上,我的查询对于我要完成的任务很有效: 关于芬德尔('([a-zA-Z]{3}\d-[aAeE][rRsS]\d.*),输出)

问题是,有时我尝试捕获的附加数据不适合同一行,而是转到下一行。。。如果模式匹配找到下一个匹配或碰到分隔符(=在本例中),是否有方法将模式匹配设置为停止?下面有两个匹配的简化示例,我需要捕获这两个匹配的能力。。。在

示例

Port Id Description
3/2/4 Part of aggregate interface lag-4. Next device in path sea1-as2
lag-4, sea1-as2 3/1/2.

Tags: 数据方法文本示例regexlagas2行上
2条回答

你提到了[a-zA-Z]和{}。有几种方法可以设置 re.IGNORECASE这样[ae][rs]就足够了。在

您没有明确表示您是在使用re.MULTILINE还是在评估regex之前删除新行。您以.*结尾,它可能会变成

[^=]*

如果您希望所有内容都达到=分隔符。在

或者,在计算regex之前,您可以在\n换行和=相等的位置拆分,这样就可以提交适当大小的块来进行计算。在

似乎您所要做的就是添加[\s\S]*?以捕获下一行中出现的任何内容,并包括预期的停止, | .以停止匹配。请注意,使[\s\S]*?变懒是很重要的,否则,它将匹配所有内容。在

print(re.findall(r'([a-zA-Z]{3}\d-[aAeE][rRsS]\d[\s\S]*?\d)(?:,|\.)', output))

输出

^{pr2}$

相关问题 更多 >