2015-10-14 64 views
0

你好,我很困惑與蟒蛇正則表達式蟒蛇正則表達式模式,這裏是我的代碼:re.search

import os,re,sys 

t="LOC_Os01g01010.1 GO:0030234 F enzyme regulator activity IEA  TAIR:AT3G59570" 
k =['LOC_Os01g01010'] 

re_search=re.search(re.escape(k[0] + r'.1 GO:\d{7}'),t,re.M|re.I|re.S) 
if re_search is None: 
     pass 
else: 
     print re_search.group() 

「T」是我的數據和「k」是我的目標。

我想要的是「LOC_Os01g01010.1 GO:0030234」或「GO:0030234」,但我不知道如何編寫模式。

+2

無論是*「我很困惑與蟒蛇正則表達式」 * *也不「我不知道怎麼寫模式」 *其實是一個問題。您是否考慮遵循正則表達式教程或使用例如http://regex101.com/#python?字符串結構的哪些部分可以實際依賴? – jonrsharpe

回答

0

鑑於你的榜樣,並期望在LOC_********.*星星可以在集合[a-ZA-Z0-9]什麼,我會建議:

import os,re,sys 

t="LOC_Os01g01010.1 GO:0030234 F enzyme regulator activity IEA  TAIR:AT3G59570" 
k =['LOC_Os01g01010'] 

re_search=re.search("(LOC_[0-9A-Z]*)",t,re.M|re.I|re.S) 
if re_search is None: 
     pass 
else: 
     print re_search.group() 

python regexthing.py產量LOC_Os01g01010當我python2運行0.7。 (LOC_[0-9A-Za-z]*)是一個捕獲組,捕獲與表達式LOC_[0-9A-Z]*匹配的任何內容。此表達式將匹配LOC_,LOC_ABCabc123,LOC_a1B2C等。

我希望這可以回答你的問題。

0

我相信以下將解決你的問題:

import re 
t="LOC_Os01g01010.1 GO:0030234 F enzyme regulator activity IEA  TAIR:AT3G59570" 
my_regex = re.compile(r'^LOC_(.)*GO:\d{7}',re.M|re.I|re.S) 
searches = my_regex.search(t) 
if searches: 
    print searches.group()