import re from typing import Iterable def findcommands(mailtext:str) -> Iterable[re.Match]: return re.finditer(r'\n(' # match any of: r'STATUS (OPEN|CLOSED|UNCONF|REJECT|UPSTRM)|' # a status change, STATUS r'TYPE (BUG|DISCUS|PATCH)|' # a type change, TYPE r'SUBJECT .*|' # a subject change, SUBJECT r'DESCRIPTION( @[0-9]*(:[0-9]*)?)?\r?\n(.*|\r?\n)*\r?\nDESCRIPTION END|' # DESCRIPTION [@\nEND DESCRIPTION r'(UN)?PERMIT .*)' # change command permission for an emailaddress, (UN)PERMIT ,mailtext)