2016-04-04 110 views
-1

我试图做一些模糊匹配的DNA读取字符串。我想允许最多1个替换错误,同时允许特定的底层对象成为两个选项之一(在这种情况下为A或G)。蟒蛇模糊正则表达式与嵌套或正则表达式

我已经开始与以下:

>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "ATTAGATACCCTGGTAGTCA") 
['ATTAGATACCCTGGTAGTCA'] 

如预期,因为我对匹配的确切字符串作为预期的,因为我对匹配的确切字符串

>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "GTTAGATACCCTGGTAGTCA") 
['GTTAGATACCCTGGTAGTCA'] 

比赛比赛但第一个碱基对已从A切换到G(允许)

>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "GTTAGATACCCTGGTAGTCx") 
['GTTAGATACCCTGGTAGTCx'] 

个匹配,而预期的,因为单个替换发生(C-> X)

>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "xTTAGATACCCTGGTAGTCx") 
[] 

不匹配(如预期),因为有两个取代

>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "xTTAGATACCCTGGTAGTCA") 
[] 

应该匹配,由于第一basepair错误(x代替A或G)应该被视为替代。

回答

0

您的最后一个例子换人:第一个碱基对已置换为x而最近已经更改为A。你只允许一个替代,所以没有匹配。