我有一个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:
^{pr2}$有人能指出这个正则表达式中的错误吗?在
regex转义character是}(不要与python转义字符混淆,后者也是
\
不是{\
,但在使用原始字符串时不需要)=>;
r"^\(.+\),$"
^
和$
匹配输入字符串的开始/结束,而不是要输出的内容=>;
r"\(.+\),"
您需要将“any”字符匹配到第1个出现的
)
,而不是最后一个,因此需要lazy operator+?
=>;
r"\(.+?\),"
如果基因名不能包含
)
字符,可以使用一个更快的正则表达式来避免backtracking=>;
r"\([^)]+\),"
没有任何捕获组
它只匹配括号内的单词,只有当右括号后面跟逗号时。在
DEMO
说明:
(?<=pattern)
中,{\(
表示一个文本{.*?(?=\),)
它匹配任何字符零次或多次。?
后面的*
使匹配变得不情愿。所以它做了一个最短的匹配。正则表达式引擎要匹配的字符后面必须跟),
您需要转义括号:
相关问题 更多 >
编程相关推荐