仅用正则表达式能否将合并日期编码与同一时间范围逐一配对?
可以实现,不需要额外写循环,仅依靠正则的全局替换功能即可完成转换。
实现方案(分两步):
- 第一次全局替换
- 匹配正则:
(\w{2})(?=(?:\w{2})*\s+(\d.+)) - 替换模板:
$1 $2, - 逻辑说明:捕获每个2位的日期缩写,通过正向预查拿到后面统一的时间范围,每次匹配到一个日期缩写就直接拼接上完整时间,后面加逗号和空格分隔。
- 第二次替换(清理末尾冗余符号)
- 匹配正则:
,\s*$ - 替换为空白内容即可。
效果演示:
输入:SuMoTu 11:00AM - 1:00PM
第一次替换后输出:Su 11:00AM - 1:00PM, Mo 11:00AM - 1:00PM, Tu 11:00AM - 1:00PM,
第二次替换后输出:Su 11:00AM - 1:00PM, Mo 11:00AM - 1:00PM, Tu 11:00AM - 1:00PM
适用范围:
完全符合你提到的前置1-5个连续2字符日期编码、后接固定1个时间范围的场景,无需调整正则即可适配不同数量的日期缩写输入。
内容的提问来源于stack exchange,提问作者Omar Taher
相关产品推荐
相关产品推荐

