【发布时间】:2013-11-15 04:37:55
【问题描述】:
我需要知道下一个正则表达式匹配的开始和结束索引:
pat = re.compile("(?=(ATG(?:(?!TAA|TGA|TAG)\w\w\w)*))")
示例字符串为s='GATGDTATGDTAAAA'
pat.findall(s) 返回所需的匹配项['ATGDTATGD', 'ATGDTAAAA']。如何提取开始和结束索引?
我试过了:
iters = pat.finditer(s)
for it in iters:
print it.start()
print it.end()
但是,it.end() 总是与 it.start() 重合,因为我的模式的开头从 (?= 开始,所以它不消耗任何字符串(我需要它来捕获重叠匹配)。明明pat.findall提取了想要的字符串,但是如何获取启动和停止索引呢?
【问题讨论】:
-
抱歉,我误解了你的问题——起初我并不清楚你所说的重叠匹配是什么意思。但是,有时人们在热心帮助时会犯错误——鉴于此,我认为你的态度是不必要的。 礼貌地解释某人如何误解了你并不难——大多数人在被礼貌地告知后,会变得道歉并寻求做正确的事——有时甚至会经历 这样做比他们开始时没有 被误解,出于弥补错误的愿望更大。粗鲁无礼,您将失去所有考虑。
-
对不起,如果我粗鲁。我很感激愿意提供帮助。
-
我看到你已经删除了你的其他 cmets——也许是我误判了你——我很抱歉在发帖之前没有花更多时间来理解你的问题。