Skip to main content
 首页 » 编程设计

python之如何在正则表达式中获得重叠的文本匹配

2024年10月24日38del

我正在使用以下内容来获取所有匹配项,包括根据 recommendations 重叠在 other线程:

[(m.start(0), m.end(0)) for m in re.findall(t,s,overlapped = True)] 

其中 t 是 s 的子集。但是,我收到以下错误:

Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
TypeError: findall() got an unexpected keyword argument 'overlapped.' 

我做错了什么/重叠了一个过时的标志/你会怎么做?非常感谢所有帮助。

请您参考如下方法:

正如 Cunningham 和 Klaus 所提到的,我所指的标志来自另一个非 re 的包。

不过,我想出了一个无需下载外部包的解决方案,使用前瞻:

[(m.start(0), m.end(0)) for m in re.finditer('(?='+t+')',s)] 

当 s = 'GATATATGCATATACTT' 且 t = 'ATAT' 时,您会得到 [(1, 1), (3, 3), (9, 9)]。我不需要返回匹配中的文本,只需要返回索引,所以它是否匹配 ['','',''] 并不重要。