如何从指定格式字符串中提取月份与连字符连接的日期范围
固定格式标题中月份+日期范围提取方案
这类格式特征非常明确的字符串,用正则表达式做定向匹配是最省事、准确率最高的方法,完全不需要做复杂的分词处理。
匹配逻辑完全对齐描述的规则:
- 定位字符串里的英文完整月份名称
- 取月份名称后紧跟的、用短横线连接的数字日期范围,和月份拼接就是目标结果
Python 实现代码
import re head_line = 'Weekly Outlook April 1-5: Full NFP buildup and the usual Brexit circus' # 正则规则:覆盖12个英文全写月份,匹配后续带短横线的日期区间 match_pattern = r'(?:January|February|March|April|May|June|July|August|September|October|November|December)\s+\d+-\d+' match_res = re.search(match_pattern, head_line) if match_res: target_str = match_res.group() print(target_str)
运行上述代码针对示例字符串的输出就是April 1-5,完全符合预期。
适配说明
- 如果后续遇到月份是缩写形式(比如把April写成Apr、October写成Oct),只要在正则的月份枚举列表里补充对应缩写值即可
- 规则里的
\s+可以兼容月份和日期之间偶尔出现多空格的格式异常 - 日期匹配规则自动兼容单/双位数日期,比如
November 11-17、May 1-10这类格式都能正常提取
内容的提问来源于stack exchange,提问作者backlog
相关产品推荐
相关产品推荐

