Обновление: на основе наблюдения @ WiktorStribiżew, что re.match
не требует полного совпадения строк в Python
Используемое мной регулярное выражение основано на том, который @dvo предоставил вкомментарий:
import re
REGEX = '^[A-Z]{3}_[0-9]{4}$'
col_headers = ['JUL_2018', 'AUG_2018', 'SEP_2018', 'OCT_2018', 'NOV_2018', 'DEC_2018', 'JAN_2019', 'FEB_2019', 'MAR_2019', 'APR_2019', 'MAY_2019', 'JUN_2019', 'MAT_YA_1', 'MAT_TY_1', 'YTD_YA_1', 'YTD_TY_1', 'L3M_YA_1', 'L1M_YA_1']
regex = re.compile(REGEX)
data_period = list(filter(regex.search, col_headers))
Еще раз, основываясь на комментарии, сделанном @ WiktorStribiżew, если вы не хотите сопоставлять что-либо с "SXX_0012"
или "XYZ_0000"
, вы должны использовать регулярное выражение, которое он предоставил вкомментарий:
REGEX = r'^(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)-[0-9]{4}$'