我有一个Fasta序列列表,每个序列如下所示:
>>> sequence_list[0]
'gi|13195623|ref|NM_024197.1| Mus musculus NADH dehydrogenase (ubiquinone) 1 alp
ha subcomplex 10 (Ndufa10), mRNAGCCGGCGCAGACGGCGAAGTCATGGCCTTGAGGTTGCTGAGACTCGTC
CCGGCGTCGGCTCCCGCGCGCGGCCTCGCGGCCGGAGCCCAGCGCGTGGG (etc)
我希望能够从列表中的每个fasta条目中提取基因名称,但是我很难找到正确的正则表达式。我以为这个可以用:“ ^ /(。+ /),$”。以括号开头,然后是任意数量的任意字符,然后以括号结尾,后跟逗号。不幸的是:这返回None:
test = re.search(r"^/(.+/),$", sequence_list[0])
print(test)
有人可以指出此正则表达式中的错误吗?
没有任何捕获组,
>>> import re
>>> str = """
... gi|13195623|ref|NM_024197.1| Mus musculus NADH dehydrogenase (ubiquinone) 1 alp
... ha subcomplex 10 (Ndufa10), mRNAGCCGGCGCAGACGGCGAAGTCATGGCCTTGAGGTTGCTGAGACTCGTC
... CCGGCGTCGGCTCCCGCGCGCGGCCTCGCGGCCGGAGCCCAGCGCGTGGG (etc)"""
>>> m = re.findall(r'(?<=\().*?(?=\),)', str)
>>> m
['Ndufa10']
仅当右括号后接逗号时,它才匹配括号内的单词。
说明:
(?<=\()
在正则表达式(?<=pattern)
中称为后向。实际上,它会查找与lookbehind中的模式匹配的字符串。在我们的情况下,后向内部的模式是\(
一个文字(
。.*?(?=\),)
它匹配任何字符零次或多次。?
之后*
使比赛依依不舍。因此,它的匹配最短。正则表达式引擎要匹配的字符后面必须跟),
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句