将某些字符 正则态度与罗马数字匹配的正则匹配



我需要从用户输入的线上提取基因和染色体的名称。线就是这样:

YAL002W VPS8 SGDID:S000000002,CHR I,来自143707-147531, 基因组释放64-2-1

基因名称是行中的第二个"单词"(=从a到z的3个大写字母,其次是0到9的数字(染色体是'chr',其次是罗马数字。我正在尝试使用Regex来做到这一点。

我正在尝试使用正则表达式来做到这一点。

这是我代码的一部分。

 import sys
 import re 
 sequence = sys.stdin.readlines()
 ref_d = {}
 temp_genename = None 
 temp_chrname = None 
 genename_pattern = '^([A-Z]{3})([0-9]{1})$'
 chr_pattern = 'Chr (?=[MDCLXVI)M*(C[MD]|D?C*)(X[CL]|L?X*)(I[XV]|V?|*)$
 m1 = re.search(genename_pattern, sequence)
 m2 = re.search(chr_pattern, sequence)
 print(m1.group())
 print(m2.group())

从上面的输入中,我希望我的代码返回m1 = vps8和m2 = chr。但是,它一直返回:

'NoneType' object has no attribute 'group'

使用:

import re

sequence = "YAL002W VPS8 SGDID:S000000002, Chr I from 143707-147531, Genome Release 64-2-1"
genename_pattern = r'b([A-Z]{3}d)b'  #Upper Case 3 letters, single digit. 
chr_pattern = 'Chrs+(.*?)s+'          #Get string after Chr until space
m1 = re.search(genename_pattern, sequence)
m2 = re.search(chr_pattern, sequence)
print(m1.group(1))
print(m2.group(1))

输出:

VPS8
I

最新更新