Python regex模块开启overlapped=True后仍遗漏DNA序列重叠匹配项
问题背景
- 运行环境为PyPy,使用支持重叠匹配功能的
regex模块开展DNA序列特征识别工作 - 需求:对给定字符串A,通过正则表达式识别符合规则的DNA特征模式,需要捕获所有符合规则的匹配项,覆盖全部重叠匹配场景
- 现存异常:已开启重叠匹配配置的前提下,
regex模块存在匹配项遗漏,无法定位问题产生的原因与修复方案
复现代码
import regex as re A = "GGGGAGAAGGGGGGCCTTCCTGGGTCCCCGAGAGTGCAGACATGCCTGGGTCCACAGCCACGGTTTGGG" GQ_list = re.findall(r"[G]{3,6}[ACTG]{1,33}[G]{3,6}[ACTG]{1,33}[G]{3,6}[ACTG]{1,33}[G]{3,6}", A, overlapped=True)
实际运行返回结果
运行上述代码后,GQ_list的返回值如下:
[ 'GGGGAGAAGGGGGGCCTTCCTGGGTCCCCGAGAGTGCAGACATGCCTGGGTCCACAGCCACGGTTTGGG', 'GGGAGAAGGGGGGCCTTCCTGGGTCCCCGAGAGTGCAGACATGCCTGGGTCCACAGCCACGGTTTGGG', 'GGGGGGCCTTCCTGGGTCCCCGAGAGTGCAGACATGCCTGGGTCCACAGCCACGGTTTGGG', 'GGGGGCCTTCCTGGGTCCCCGAGAGTGCAGACATGCCTGGGTCCACAGCCACGGTTTGGG', 'GGGGCCTTCCTGGGTCCCCGAGAGTGCAGACATGCCTGGGTCCACAGCCACGGTTTGGG', 'GGGCCTTCCTGGGTCCCCGAGAGTGCAGACATGCCTGGGTCCACAGCCACGGTTTGGG' ]
匹配校验与核心疑问
逐段对照所写正则规则校验可知,字符串A中实际存在符合规则的匹配项:
"GGGGAGAAGGGGGGCCTTCCTGGGTCCCCGAGAGTGCAGACATGCCTGGG",但该匹配项未出现在上述返回结果中。
核心疑问:匹配遗漏的根本原因是什么?需要做哪些调整,才能完整捕获所有可能的匹配项(包含全部重叠场景)?
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

