首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用正则表达式找到最短的重叠匹配?

如何使用正则表达式找到最短的重叠匹配?
EN

Stack Overflow用户
提问于 2010-01-28 00:49:35
回答 9查看 7.4K关注 0票数 16

对于regex来说,我还是个新手。我试图找到与特定模式匹配的最短文本字符串,但如果最短模式是较大匹配的子串,则会遇到问题。例如:

代码语言:javascript
运行
复制
import re
string = "A|B|A|B|C|D|E|F|G"
my_pattern = 'a.*?b.*?c'

my_regex = re.compile(my_pattern, re.DOTALL|re.IGNORECASE)
matches = my_regex.findall(string)

for match in matches:
    print match

打印:

代码语言:javascript
运行
复制
A|B|A|B|C

但我想让它回来:

代码语言:javascript
运行
复制
A|B|C

有没有办法做到这一点,而不必遍历每个匹配,以查看它是否包含匹配的子字符串?

EN

Stack Overflow用户

发布于 2010-01-28 01:00:41

不是的。Perl返回最长的、最左边的匹配,同时遵守非贪婪的量词。恐怕你得循环一遍。

编辑:是的,我意识到我在上面提到了Perl,但我相信Python也是如此。

票数 1
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2148700

复制
相关文章

相似问题

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