首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python多行regex findall

python多行regex findall
EN

Stack Overflow用户
提问于 2017-10-15 02:33:53
回答 2查看 827关注 0票数 0

我试图用分隔符在多行文本中找到多个匹配,以便使用python中的regex停止搜索。如果我所需要的都在同一行上:re.findall(‘(a-Za-Z3}\d-aAeE.*),输出),我的查询效果很好。

问题是,有时我试图获取的额外数据不适合在同一条线上,然后转到下一条.如果模式匹配找到下一个匹配或命中分隔符(在本例中为=),是否有方法将模式匹配设置为停止?下面有两个匹配的简单例子,我需要有能力捕捉这两个.

示例

代码语言:javascript
复制
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.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-15 03:05:29

看起来,您所要做的就是添加[\s\S]*?来捕获下一行中出现的任何内容,并包括预期的stop , | .以停止匹配。请注意,让[\s\S]*?懒惰是很重要的,否则,它将匹配整个事情。

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

输出

代码语言:javascript
复制
['sea1-as2 lag-4', 'sea1-as2 3/1/2']
票数 1
EN

Stack Overflow用户

发布于 2017-10-15 03:11:38

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

在计算regex之前,您没有明确说明是使用re.MULTILINE还是删除换行符。你的结尾是.*,这可能会成为

代码语言:javascript
复制
[^=]*

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

或者,在计算正则表达式之前,您可以在\n换行符和=相等上拆分,因此您可以提交适当大小的块进行计算。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46751152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档