python - 在 Python 中使用 re.findall() 返回所有重叠模式?

标签 python regex string findall

预先感谢您的阅读。

我有一个字符串:

A = "a levels"

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

Pattern = r"a level|a levels"

(此图案的形式已定,无法更改。) 经过搜索,我希望得到:

["a level","a levels"]

我使用 findall 如下:

B = re.findall(Pattern,A)

并得到:

B = "a level"

re.findall 仅匹配第一个术语并忽略第二个重叠术语。

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

B = re.findall(Pattern,A,overlapped = True)

并出现以下错误:

TypeError: findall() got an unexpected keyword argument 'overlapped'

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

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

C = re.finditer(Pattern,A)
results = match.group()

results = "a level"

所以没有更好。

如何获得我想要的输出?

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

最佳答案

如果所有可能的模式都与您所显示的类似,那么这可能适合您:

B=[b for pat in Pattern.split('|') for b in re.findall(pat, A)]

当然,这并不能概括为模式是一组简单的替代方案。

关于python - 在 Python 中使用 re.findall() 返回所有重叠模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41045008/

相关文章:

python - 无法替换 pandas DataFrame 中的字符串内容

javascript - 带星号的负前瞻如何工作?

c++ - 当我尝试将短语放入 vector 中时,短语的第一个单词被丢弃了?

string - 生成特定格式的唯一字符串的算法

regex - 谷歌表格: convert string to date

java - 如果有很多字符串,如何以通用方式从字符串中获取特定部分

python - 来自 NLTK、Gensim、Scikit Learn 的 API 调用

python - Pygame 碰撞一次发生 19 次 - Python 3.x

python - 如何将 Python Project 打包成独立的可执行文件?

regex - 如何从oracle的正则表达式中排除一个单词?