我想创建一个regex,它可以解析定期出现在我正在查看的文档中的日期表达式,特别是,日期有时会写成:

FEBRUARY 8
FEBRUARY. 8
FEBRUARY 8.
FEBRUARY    8

所以我的正则表达式应该看起来像
re.compile(MonthList+'.?.?.?.?[0-9][0-9]?')

只是这不起作用。如何将列表写入正则表达式,使其充当(JANUARY|FEBRUARY|MARCH|...etc)而不是实际写出该列表或进行循环?

最佳答案

可以使用普通的字符串操作来构建正则表达式。请记住,列表中的字符串也将被解释为regex,除非使用re.escape清理它们:

r = re.compile('({}).{0,3}\d{1,2}'.format(
         '|'.join(map(re.escape, month_list))))

10-02 14:42