p = re.compile("[AG].{2}[ATG|ATA|AAG].{1}G")
regex_result = p.search('ZZZAXXATGXGZZZ')
regex_result.group()
'AXXATG'
我原本期待AXXATGXG
。
答案 0 :(得分:6)
在替代方案周围使用分组构造(...)
而不是字符类[...]
:
p = re.compile("[AG].{2}(?:ATG|ATA|AAG).G")
^^^^^^^^^^^^^^^
(?:ATG|ATA|AAG)
匹配3个序列:ATG
,ATA
或AAG
。 [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