2016-07-27 10 views
3
p = re.compile("[AG].{2}[ATG|ATA|AAG].{1}G") 
regex_result = p.search('ZZZAXXATGXGZZZ') 
regex_result.group() 
'AXXATG' 

代わりにAXXATGXGが必要でした。Python Regexは、最初の "|"一致

p = re.compile("[AG].{2}(?:ATG|ATA|AAG).G") 
         ^^^^^^^^^^^^^^^ 

(?:ATG|ATA|AAG)マッチ3つの系列:ATG、またはATAまたはAAGのいずれか

答えて

6

は選択肢の周り(...)ではなく、文字クラス[...]を構築し、グループ化を使用してください。 [ATG|ATA|AAG]文字クラスは、1文字に一致し、A,T,Gまたは|のいずれかに一致します。

{1}は冗長であり、削除することができます。

のPython:

import re 
p = re.compile("[AG].{2}(?:ATG|ATA|AAG).G") 
regex_result = p.search('ZZZAXXATGXGZZZ') 
print(regex_result.group()) 
# => AXXATGXG 

IDEONE demo

+0

美しい説明を参照してください。あなたは私の一日を救った! –

関連する問題