我有一个perl正则表达式/VA=\d+:(\S+):ENSG/
,它在if语句中用作
if ($info =~ /VA=\d+:(\S+):ENSG/){
$gene =$1;
我试图弄清楚在python中复制这个的最佳方法是什么。现在我有
gene_re = re.compile(r'VA=\d+:(\S+):ENSG')
this_re = re.search(gene_re, info)
if this_re is not None:
gene = info[this_re.start(0):this_re.end(0)]
这是翻译的好方法吗?我想这是perl实际上比python更具可读性的一个领域。
请注意,编译python正则表达式是因为接下来的三行实际上在循环内。
答案 0 :(得分:3)
您可以使用
gene = this_re.group(1)
而不是
gene = info[this_re.start(0):this_re.end(0)]
顺便说一句,Python re
模块缓存N
最近使用的正则表达式模式,因此(除非你有非常多的模式),没有必要预编译它。
对于Python 2.7,re._MAXCACHE
(即N
)为100。