我想在文件中搜索DNA序列,该序列仅包含[ATGC],4个字符。
我尝试这种模式:
m=re.search('([ATGC]+)',line_in_file)
但它给了我点击所有行包含至少1个字符的ATGC。
所以如何搜索该行仅包含这4个字符,而不包含其他字符。
由于
答案 0 :(得分:3)
目前您的正则表达式与该行的任何部分匹配。使用^
$
符号可以强制正则表达式对具有四个字符的整行执行。
m=re.search('(^[ATGC]+$)',line_in_file)
从您上面的澄清消息:
如果您希望将此AAAGGGCCCCCCT
的序列与订单AGCT
匹配,则正则表达式将为:
(A+G+C+T+)
答案 1 :(得分:1)
搜索字符串中的方括号表示正则表达式编译器匹配集合中的任何字母,而不是完整字符串。取下方括号,然后将+移到您的parens外面。
m=re.search('(ATGC)+',a)
编辑: 根据你的评论,这不符合你真正想要的模式,只是我认为你想要的模式。一旦我理解了实际模式,我就可以再次编辑。
EDIT2: 要匹配“ATGCCATG”而不是“STUPID”,请尝试
re.match("^[ATGC]$", str)
然后检查是否匹配,而不是匹配。
如果[ATGC]中没有任何字符,则会出现正则表达式,然后排除匹配的字符串。