Python Regex在第一次" |"之后停止比赛

时间:2016-07-27 20:32:38

标签: python regex

p = re.compile("[AG].{2}[ATG|ATA|AAG].{1}G")
regex_result = p.search('ZZZAXXATGXGZZZ')
regex_result.group()
'AXXATG'

我原本期待AXXATGXG

1 个答案:

答案 0 :(得分:6)

在替代方案周围使用分组构造(...)而不是字符类[...]

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

(?:ATG|ATA|AAG)匹配3个序列:ATGATAAAG[ATG|ATA|AAG]字符类匹配1个字符,ATG|

注意{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