如何使用python re匹配只有几个特定字符的字符串?

时间:2014-02-19 18:03:01

标签: python regex

我想在文件中搜索DNA序列,该序列仅包含[ATGC],4个字符。 我尝试这种模式:  m=re.search('([ATGC]+)',line_in_file) 但它给了我点击所有行包含至少1个字符的ATGC。 所以如何搜索该行仅包含这4个字符,而不包含其他字符。

抱歉错误地描述了我的问题。我不是在寻找ATGC与单词的完全匹配,而是仅包含ATCG 4字符的字符串

由于

2 个答案:

答案 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]中没有任何字符,则会出现正则表达式,然后排除匹配的字符串。