小心_正则表达式,求解正则的原理
时间:2011-09-04
来源:互联网
我是学生物的,最近有段mRNA序列(如下)。我们组有个成员要求从这段序列识别出特定的碱基组合“AA(19个任意碱基)
TT”【就是23个ATCG字符组合成的一段序列,但是必须以AA开头,TT结束】。
开始程序设计比较复杂:
(1)
Python code
虽然这个方法比较复杂但事情终于做完了,后来打算尝试一下怎么用正则表达式搞定。因为一直对正则应用不熟,不得不锻炼一下。
(2)正则的尝试
Python code
TT”【就是23个ATCG字符组合成的一段序列,但是必须以AA开头,TT结束】。
开始程序设计比较复杂:
(1)
Python code
n='GTCTATAATTTCATTTTTGTCTAGGCTGGTGAGAGCTCCGCTTGTTCCGTAAAGTGGATGTCAGGTGGATCTATGTTCTGCGAGGAACAAAGAGGCAGCGAAGGCAGCGCGGGGGAAGTTTGAGCGGCGAGGATGCAGGCTGTGTACTGGTGCGCGGTCCTCCTGCTGCAGCCCACCCTCTACTTGGTTACCTGTGCAAATTTAACAAATGGAGGTAAATCAGAACTTCTAAAATCAGGAAGCTCCAAATCCACACTAAAGCACATATGGACAGAAAGTAGCAAAGACTTGTCCATCAGCCGACTGCTGTCACAGACTTTTCGTGGAAAGGAGAATGATACAGATTTGGACCTGCGATATGATGCCCCAGAAACTTATACTGAGCAAGATCTCTGGGACTGGCTGAGGAACTCCACAGACCTTCAAGAACCTCGGCCCAGGGCAAAGAGACGGCCCATTGTCAAGACTGGGAAATTTAAGAAAATGTTTGGCTGGGGCGATTTTCATTCCAACATCAAGACTGTGAAGCTAAATCTGTTAATAACAGGGAAAATTGTTGACCATGGCAATGGGACGTTTAGCGTTTACTTCAGGCATAACTCCACTGGTCAAGGGAATGTATCTGTGAGCCTAGTGCCCCCTACAAAAATAGTGGAATTTGACTTGGCACAACAGACAGTGATTGATGCCAAAGATTCCAAGTCCTTTAACTGTCGAATTGAGTATGAAAAGGTTGACAAGGCTACCAAGAACACACTCTGCAACTATGACCCTTCAAAAACCTGTTATCAGGAGCAGACCCAGAGCCACGTGTCATGGCTCTGCTCCAAGCCCTTTAAAGTAATCTGTATTTACATTTCGTTTTATAGTACAGATTATAAACTAGTACAGAAGGTGTGTCCTGATTACAACTACCACAGTGACACACCCTACTTCCCCTCAGGGTGAGGATGAACGTGTCTGAGACTGAAGCCTGGGGAATAAAAGAATTCGTATGACAGGGCTGTAACCTCAAGGAGGAAAGCCACATCTATTGCCTGGAATGTGTCTACCTGCTGCTGCTGATGTCATATGGCTGCAAATATGTTAGTGGAAAACAATCTAATGTAATTTTTGCCCAGTCAGCACCATGTATCAATCTAGTTGTAAATCACTATGGATTTGAAATAAAACCATACACACACACACAGAGACACACACTCTTTTCAGCTCATATCTATTGAGATTCCTGTTAAGAGAGATTTTCACTGTCTGATAACTAAGGTTTTGGGATAAACTATCATCAAGCAAAATGGATTAACTAGACAGAGAACAGTTTCTAACACAGACTATTGTGGAAATCTCTTTGAAAGTCCTTTGAGTGTATACCAATAATCCCCACTCATGCGTTCTACTGCTTGGAGTAGCTGTACCGGTAAATAATACTGTAGGAGTAAATACTTGTTAAAATGGGAAAAATGTGTGTCTAGAGTTCAGTATTCCTTGCTATATGAACACAGTAAAGCATAGTGACTTTTTTCCAGCATACAGTAGGCACATTCAAGGTGGTGTTAGGTGGCTCTTTTTCCATGGAGCGAGCCTGTTACCAGTAAAGATGGGCAAACATTTGGAATTTACATGTGGGCAGACATCCTGGTTTTATGTTTCTCTGACTCTTTAAGCTCTGATTCTTTAAACCTGGTTGAGTTTAGTCAAGCAAAGCTATTTTAAAACCCTCTAAATGATCTTTAGGAAGGAAAATGCCTCATGGAGGACATGTAAGTTATAAGTGGCTGTCTTATCTTTATTACAAAATATTGTAACAAATTCAATATCCTAGTCTTGATTTGTATGAATGGTTTGTATTGTACATAATTTAACCAGTGTTATTTGAGCTGCTTATTAATATTAACTTGTAATTGTCTCTCTGCTTGTTATTGGTTAAAAACAATTGAGGAAATGAGGAATCCATTTTATCAATGTAGCTGTAAACTCATTAAAAGACAGAACTATGTACAAAGCATTTATTCAGCTAAAGTATTGTTGAAAGCTAAACATATACAAC' # 将碱基导入空列表 newli=[] for i in n: newli.append(i) # 逐个查找符合条件的序列 for i in range(len(newli)): if ''.join(newli[i:i+2]) == 'AA' and ''.join(newli[i+21:i+23])=='TT': print ''.join(newli[i:i+23]) 最后获得14个满足条件的序列如下 ''' AAAATGTTTGGCTGGGGCGATTT AAATGTTTGGCTGGGGCGATTTT* AAGACTGTGAAGCTAAATCTGTT AATGGGACGTTTAGCGTTTACTT AATCTGTATTTACATTTCGTTTT AACAGTTTCTAACACAGACTATT AACACAGTAAAGCATAGTGACTT AAGGTGGTGTTAGGTGGCTCTTT AAGATGGGCAAACATTTGGAATT AACAAATTCAATATCCTAGTCTT AATTCAATATCCTAGTCTTGATT* AATGGTTTGTATTGTACATAATT AACCAGTGTTATTTGAGCTGCTT AACTTGTAATTGTCTCTCTGCTT '''
虽然这个方法比较复杂但事情终于做完了,后来打算尝试一下怎么用正则表达式搞定。因为一直对正则应用不熟,不得不锻炼一下。
(2)正则的尝试
Python code
import re find = re.findall(r'AA\w{19}TT',n) if find: for i in find: print i print len(find) 问题是应用正则只识别出12条序列满足条件 ''' AAAATGTTTGGCTGGGGCGATTT AAGACTGTGAAGCTAAATCTGTT AATGGGACGTTTAGCGTTTACTT AATCTGTATTTACATTTCGTTTT AACAGTTTCTAACACAGACTATT AACACAGTAAAGCATAGTGACTT AAGGTGGTGTTAGGTGGCTCTTT AAGATGGGCAAACATTTGGAATT AACAAATTCAATATCCTAGTCTT AATGGTTTGTATTGTACATAATT AACCAGTGTTATTTGAGCTGCTT AACTTGTAATTGTCTCTCTGCTT '''
作者: hebgm 发布时间: 2011-09-04
中间有重叠吧。re.findall的所有结果,是不能用重叠的。
Python code
Python code
import re print re.findall(r'A{2}', 'AAAA') print re.findall(r'AA\w{4}TT', 'AAAAXXYYTTTT')
作者: iambic 发布时间: 2011-09-04
现在的问题是为什么正则表达式少识别了两段序列呢【(1)结果“*”表示的序列】?后来仔细观察后发现是“AAAATGTTTGGCTGGGGCGATTTT”这个片段在作怪。对于这段序列其实包含了两条满足条件的序列片段:从第一个A处开始和从第二个A开始都满足条件,因为后边有四个T。
那么为什么正则没有在识别出一条满足条件的序列后再移动一个字母A继续匹配呢?是我的表达错误吗?实在不清楚正则表达的原理,求高人指点!
那么为什么正则没有在识别出一条满足条件的序列后再移动一个字母A继续匹配呢?是我的表达错误吗?实在不清楚正则表达的原理,求高人指点!
作者: hebgm 发布时间: 2011-09-04
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28