首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python中的re.findall()返回所有重叠模式?

使用Python中的re.findall()返回所有重叠模式?
EN

Stack Overflow用户
提问于 2016-12-08 17:07:48
回答 1查看 1.2K关注 0票数 1

提前感谢您的阅读。

我有一根绳子:

代码语言:javascript
复制
A = "a levels"

我想匹配以下所有可能的A级变体:

代码语言:javascript
复制
Pattern = r"a level|a levels"

(设置了此模式的形式,我无法更改它。)在搜索之后,我想得到:

代码语言:javascript
复制
["a level","a levels"]

我使用findall如下:

代码语言:javascript
复制
B = re.findall(Pattern,A)

并得到:

代码语言:javascript
复制
B = "a level"

re.findall只匹配第一个项,忽略第二个重叠项。

Per:我尝试使用的Python regex find all overlapping matches?

代码语言:javascript
复制
B = re.findall(Pattern,A,overlapped = True)

并得到以下错误:

代码语言:javascript
复制
TypeError: findall() got an unexpected keyword argument 'overlapped'

显然,overlapped不再作为关键字参数存在.

然后我看了这个问题:Python regex find all overlapping matches?并尝试:

代码语言:javascript
复制
C = re.finditer(Pattern,A)
results = match.group()

results = "a level"

所以没有更好的了。

我怎样才能得到我想要的输出?

相关qu:How to find overlapping matches with a regexp?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-08 17:26:45

如果所有可能的Pattern都与您所展示的类似,那么这可能适用于您:

代码语言:javascript
复制
B=[b for pat in Pattern.split('|') for b in re.findall(pat, A)]

当然,除了Pattern之外,这并不是一组简单的替代方案。

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

https://stackoverflow.com/questions/41045008

复制
相关文章

相似问题

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