2024-09-27 02:21:04 发布
网友
我想在一个文件中搜索DNA序列,这个序列只包含[ATGC],4个字符。 我尝试这个模式: m=re.search('([ATGC]+)',line_in_file) 但是它给我的命中率是所有行至少包含一个ATGC字符。 那么我如何搜索这行只包含这4个字符,没有其他字符。在
m=re.search('([ATGC]+)',line_in_file)
对不起,我的问题描述错了。我不是在寻找与ATGC完全匹配的单词,而是只包含atcg4个字符的字符串
谢谢
目前您的正则表达式与行的任何部分匹配。使用^$符号可以强制regex对包含四个字符的整行执行。在
^
$
m=re.search('(^[ATGC]+$)',line_in_file)
从您在上面的澄清信息:
如果您想将这样的序列AAAGGGCCCCCCT与顺序AGCT匹配,那么regex将是:
AAAGGGCCCCCCT
AGCT
搜索字符串中的方括号告诉正则表达式编译器匹配集合中的任何字母,而不是完整字符串。去掉方括号,把+移到你的括号外。在
m=re.search('(ATGC)+',a)
编辑: 根据你的评论,这不符合你实际想要的模式,只是我认为你想要的那种。一旦我理解了实际的模式,我可以再次编辑。在
编辑2: 为了匹配“ATGCCATG”而不是“愚蠢的”尝试
然后检查不匹配项,而不是匹配项。在
如果有任何字符不在[ATGC]中,则正则表达式将命中,然后排除匹配的字符串。在
目前您的正则表达式与行的任何部分匹配。使用
^
$
符号可以强制regex对包含四个字符的整行执行。在从您在上面的澄清信息:
如果您想将这样的序列
^{pr2}$AAAGGGCCCCCCT
与顺序AGCT
匹配,那么regex将是:搜索字符串中的方括号告诉正则表达式编译器匹配集合中的任何字母,而不是完整字符串。去掉方括号,把+移到你的括号外。在
编辑: 根据你的评论,这不符合你实际想要的模式,只是我认为你想要的那种。一旦我理解了实际的模式,我可以再次编辑。在
编辑2: 为了匹配“ATGCCATG”而不是“愚蠢的”尝试
^{pr2}$然后检查不匹配项,而不是匹配项。在
如果有任何字符不在[ATGC]中,则正则表达式将命中,然后排除匹配的字符串。在
相关问题 更多 >
编程相关推荐