簡體   English   中英

正則表達式匹配一定數量的字符+帶有羅馬數字的正則表達式

[英]Regex matching certain number of characters + regex with roman numerals

我需要從用戶輸入的行中提取基因和染色體的名稱。 行是這樣的:

YAL002W VPS8 SGDID:S000000002,Chr I from 143707-147531,Genome Release 64-2-1

基因名稱是該行中的第二個“單詞”(= 3個大寫字母,從A到Z,后跟0至9的數字)。染色體是“ Chr”,后跟羅馬數字。 我正在嘗試使用正則表達式來做到這一點。

我正在嘗試使用正則表達式來做到這一點。

這是我的代碼的一部分。

 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 = ChrI。但是,它一直在返回:

'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 = 'Chr\s+(.*?)\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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM