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].{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
. Класс персонажей соответствует 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
Красивые объяснения. Ты спас мой день! –