【发布时间】:2020-10-20 07:04:55
【问题描述】:
任务
在字符串中查找最长的连续序列。
例如,给定 DNA 序列:AGATCAGATCTTTTTTCTAATGTCTAGGATATATCAGATCAGATCAGATCAGATCAGATC,找出最长的连续序列 AGATC。
我尝试了什么
使用 search = re.findall(r'(AGATC)+', DNAsequence) 只返回具有 1 个连续序列的字符串,例如['AGATC', 'AGATC', 'AGATC', ...]
我发现我需要使用非捕获组?: 才能获得预期的输出。 search = re.findall(r'(?:AGATC)+', DNAsequence) 返回我预期的 ['AGATC', 'AGATCAGATCAGATC', 'AGATC', ...]
我需要什么帮助
为什么我需要使用非捕获组表达式才能获得超过 1 个连续序列? (AGATC)+ 本身不应该已经给出了预期的输出吗?据我了解,是否使用捕获组也不应该影响搜索结果。
注意
这个问题与How to catch the longest sequence of a group 高度相关,但是上面的答案并没有解释为什么非捕获组必须在语法中使用。我无法将我的问题添加为评论,所以我必须创建一个新帖子。
【问题讨论】: