提前感谢您阅读。
我有一个字符串:
A = "a levels"
我希望匹配A级的所有以下可能变体:
Pattern = r"a level|a levels"
(设置此模式的形式,我无法更改它。) 搜索之后,我希望得到:
["a level","a levels"]
我使用findall如下:
B = re.findall(Pattern,A)
并获得:
B = "a level"
re.findall仅匹配第一个术语并忽略第二个重叠术语。
Per: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"
所以没有更好的。
如何获得我想要的输出?
答案 0 :(得分:1)
如果所有可能的Pattern
都与您展示的相似,则可能对您有用:
B=[b for pat in Pattern.split('|') for b in re.findall(pat, A)]
当然,除了Pattern
是一组简单的替代方案之外,这并不概括。