import re
regex = re.compile(r"^(?:A(?:C(?:WS|[DS])?T|DT|E[DS]?T|FT|K[DS]T|LMT|M[S]?T|NAS?T|QTT|RT|ST|W[DS]T|Z(?:OS|[OS])?T|oE|T)|B(?:RS|[NORST])T|C(?:AS|ES|H(?:A[DS]|OS|[OU])|ID?S|LS|hS|[ACDEKLOSVX])?T|D(?:AV|DU)T|E(?:ASS?|ES|GS|[ACDEGS])?T|F(?:JS|KS|[EJKN])T|G(?:A[LM]|IL|[EFMSY])T|H(?:OVS?|[DKS])T|I(?:R(?:KS|[DKS])|[CDOS])T|JST|K(?:OS|RAS?|UY|[GS])T|L(?:H[DS]|IN)T|M(?:A(?:GS|[GRW])T|DT|HT|MT|S[DKT]|UT|VT|YT|T)|N(?:FD|OVS?|Z[DS]|[CDFPRSU])T|O(?:MSS?|RA)T|P(?:ETS?|HO|M[DS]|ON|YS|[DEGHKSWY])?T|QYZT|R(?:OT|E)T|S(?:A[KMS]|RE|YO|[BCGRS])T|T(?:AH|OS|[FJKLMORV])T|U(?:LAS?T|TC|YS?T|ZT)|V(?:LAS?|OS|[EU])T|W(?:A(?:RS|[KS])?T|ES?T|FT|GS?T|I(?:TA|[BT])|ST|T)|Y(?:A(?:KS|[KP])|EKS?)T|[ABCDEFGHIKLMNOPQRSTUVWXYZ])$", flags=re.MULTILINE)
test_str = ("A\n"
"ACDT\n"
"ACST\n"
"ACT\n"
"ACT\n"
"ACWST\n"
"ADT\n"
"ADT\n"
"AEDT\n"
"AEST\n"
"AET\n"
"AFT\n"
"AKDT\n"
"AKST\n"
"ALMT\n"
"AMST\n"
"AMST\n"
"AMT\n"
"AMT\n"
"ANAST\n"
"ANAT\n"
"AQTT\n"
"ART\n"
"AST\n"
"AST\n"
"AT\n"
"AWDT\n"
"AWST\n"
"AZOST\n"
"AZOT\n"
"AZST\n"
"AZT\n"
"AoE\n"
"B\n"
"BNT\n"
"BOT\n"
"BRST\n"
"BRT\n"
"BST\n"
"BST\n"
"BST\n"
"BTT\n"
"C\n"
"CAST\n"
"CAT\n"
"CCT\n"
"CDT\n"
"CDT\n"
"CEST\n"
"CET\n"
"CHADT\n"
"CHAST\n"
"CHOST\n"
"CHOT\n"
"CHUT\n"
"CIDST\n"
"CIST\n"
"CKT\n"
"CLST\n"
"CLT\n"
"COT\n"
"CST\n"
"CST\n"
"CST\n"
"CT\n"
"CVT\n"
"CXT\n"
"ChST\n"
"D\n"
"DAVT\n"
"DDUT\n"
"E\n"
"EASST\n"
"EAST\n"
"EAT\n"
"ECT\n"
"EDT\n"
"EEST\n"
"EET\n"
"EGST\n"
"EGT\n"
"EST\n"
"ET\n"
"F\n"
"FET\n"
"FJST\n"
"FJT\n"
"FKST\n"
"FKT\n"
"FNT\n"
"G\n"
"GALT\n"
"GAMT\n"
"GET\n"
"GFT\n"
"GILT\n"
"GMT\n"
"GST\n"
"GST\n"
"GYT\n"
"H\n"
"HDT\n"
"HKT\n"
"HOVST\n"
"HOVT\n"
"HST\n"
"I\n"
"ICT\n"
"IDT\n"
"IOT\n"
"IRDT\n"
"IRKST\n"
"IRKT\n"
"IRST\n"
"IST\n"
"IST\n"
"IST\n"
"JST\n"
"K\n"
"KGT\n"
"KOST\n"
"KRAST\n"
"KRAT\n"
"KST\n"
"KUYT\n"
"L\n"
"LHDT\n"
"LHST\n"
"LINT\n"
"M\n"
"MAGST\n"
"MAGT\n"
"MART\n"
"MAWT\n"
"MDT\n"
"MHT\n"
"MMT\n"
"MSD\n"
"MSK\n"
"MST\n"
"MT\n"
"MUT\n"
"MVT\n"
"MYT\n"
"N\n"
"NCT\n"
"NDT\n"
"NFDT\n"
"NFT\n"
"NOVST\n"
"NOVT\n"
"NPT\n"
"NRT\n"
"NST\n"
"NUT\n"
"NZDT\n"
"NZST\n"
"O\n"
"OMSST\n"
"OMST\n"
"ORAT\n"
"P\n"
"PDT\n"
"PET\n"
"PETST\n"
"PETT\n"
"PGT\n"
"PHOT\n"
"PHT\n"
"PKT\n"
"PMDT\n"
"PMST\n"
"PONT\n"
"PST\n"
"PST\n"
"PT\n"
"PWT\n"
"PYST\n"
"PYT\n"
"PYT\n"
"Q\n"
"QYZT\n"
"R\n"
"RET\n"
"ROTT\n"
"S\n"
"SAKT\n"
"SAMT\n"
"SAST\n"
"SBT\n"
"SCT\n"
"SGT\n"
"SRET\n"
"SRT\n"
"SST\n"
"SYOT\n"
"T\n"
"TAHT\n"
"TFT\n"
"TJT\n"
"TKT\n"
"TLT\n"
"TMT\n"
"TOST\n"
"TOT\n"
"TRT\n"
"TVT\n"
"U\n"
"ULAST\n"
"ULAT\n"
"UTC\n"
"UYST\n"
"UYT\n"
"UZT\n"
"V\n"
"VET\n"
"VLAST\n"
"VLAT\n"
"VOST\n"
"VUT\n"
"W\n"
"WAKT\n"
"WARST\n"
"WAST\n"
"WAT\n"
"WEST\n"
"WET\n"
"WFT\n"
"WGST\n"
"WGT\n"
"WIB\n"
"WIT\n"
"WITA\n"
"WST\n"
"WST\n"
"WT\n"
"X\n"
"Y\n"
"YAKST\n"
"YAKT\n"
"YAPT\n"
"YEKST\n"
"YEKT\n"
"Z")
subst = "$1"
result = regex.sub(subst, test_str)
if result:
print(result)
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html