Closed. This question is not reproducible or was caused by typos 。它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 Stack Overflow 的 on-topic

4年前关闭。



Improve this question



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

我期待的是 AXXATGXG

最佳答案

在备选方案周围使用分组结构 (...) 而不是字符类 [...]:

p = re.compile("[AG].{2}(?:ATG|ATA|AAG).G")
                        ^^^^^^^^^^^^^^^
(?:ATG|ATA|AAG) 匹配 3 个序列:a 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

关于Python Regex 在第一次 "|"匹配后停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38622667/

10-13 03:38