p = re.compile("[AG].{2}[ATG|ATA|AAG].{1}G")
regex_result = p.search('ZZZAXXATGXGZZZ')
regex_result.group()
'AXXATG'
Run Code Online (Sandbox Code Playgroud)
我期待的是AXXATGXG.
在替代方案周围使用分组构造(...)而不是字符类[...]:
p = re.compile("[AG].{2}(?:ATG|ATA|AAG).G")
^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
的(?:ATG|ATA|AAG)比赛3个序列:要么是ATG,或ATA或AAG.的[ATG|ATA|AAG]字符类匹配1块炭,无论是A,T,G或|.
请注意,这{1}是多余的,可以删除.
蟒蛇:
import re
p = re.compile("[AG].{2}(?:ATG|ATA|AAG).G")
regex_result = p.search('ZZZAXXATGXGZZZ')
print(regex_result.group())
# => AXXATGXG
Run Code Online (Sandbox Code Playgroud)
请参阅IDEONE演示