如何将自定义正则片段与已知字符串结合构建Python正则表达式?
解决方案
这事儿超简单,你只需要把单独定义的月份正则和年份部分做字符串拼接,再传给re.compile()就搞定了,完全贴合你的需求:
import re # 先定义好月份的正则分组 regMonth = '(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)' # 用字符串拼接组合完整的正则模式(保留你原来的外层捕获组,同时把空格改成可选的\s?) full_pattern = f'(({regMonth})\s?\d{{4}})' # 编译成正则表达式对象 exp1 = re.compile(full_pattern)
小细节说明:
- 用f-string拼接时,
\d{{4}}里的双大括号是为了在f-string中输出单个大括号(因为f-string会把单大括号当成变量占位符); - 要是你习惯用传统字符串格式化,也可以这么写:
full_pattern = '((%s)\\s?\\d{4})' % regMonth - 拼接后的正则逻辑和你最初的代码完全一致,只是把月份部分抽成了独立变量,同时按要求把固定空格改成了可选的
\s?。
内容的提问来源于stack exchange,提问作者Mjay99
相关产品推荐
相关产品推荐

