Return Python 中使用 re.findall() 的所有重叠模式?
Return all overlapping patterns using re.findall() in Python?
提前感谢您的阅读。
我有一个字符串:
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 只匹配第一个词,忽略第二个重叠词。
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"
所以再好不过了。
如何获得我想要的输出?
相关问题:How to find overlapping matches with a regexp?
如果所有可能的 Pattern
都与您所展示的相似,这可能对您有用:
B=[b for pat in Pattern.split('|') for b in re.findall(pat, A)]
当然,这并不能概括为 Pattern
是一组简单的替代方案。
提前感谢您的阅读。
我有一个字符串:
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 只匹配第一个词,忽略第二个重叠词。
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"
所以再好不过了。
如何获得我想要的输出?
相关问题:How to find overlapping matches with a regexp?
如果所有可能的 Pattern
都与您所展示的相似,这可能对您有用:
B=[b for pat in Pattern.split('|') for b in re.findall(pat, A)]
当然,这并不能概括为 Pattern
是一组简单的替代方案。