sublime text没有“一键提取日期”功能,所有日期提取均需手动编写正则表达式、选中并复制;必须显式锚定边界、使用捕获组获取纯日期,并注意换行符一致性与结果清洗。

Sublime里“一键提取日期”根本不存在
Sublime Text 没有内置的日期识别引擎,也不会自动把 2023-04-15 或 15/04/2023 当作“日期类型”高亮或导出。所谓“提取”,全是靠你写对正则、选中、复制三步手动完成——漏掉任一环节,结果就错位或残缺。
匹配常见日期格式必须显式写全边界和分隔符
直接用 \d{4}-\d{2}-\d{2} 会把 12345-67-89 或 2023-04-15T10:30:00 里的前半段也卷进来;不加词边界或空格锚定,还可能切进 id=2023-04-15-abc 这类字符串中间。
- 推荐写法:
(?(匹配 ISO 格式,前后是空格或行首/行尾) - 兼容斜杠格式:
(? - 中文格式(如“2023年04月15日”):
(? - ⚠️ 别用
\b:在中文混排或带标点文本里,\b基本失效,必须用(? 和 <code>(?=\s|$)显式控制上下文
Find All 后复制的是匹配片段,不是整行
如果你只想拿日期本身(比如 2023-04-15),正则里必须用括号包住目标部分;否则复制出来的是整个匹配项,比如 created_at: "2023-04-15" 也会被一起拷走。
- 正确写法:
created_at:\s*["'](\d{4}-\d{2}-\d{2})["']→Find All→Ctrl+C→ 粘贴后就是纯日期列表 - 错误写法:
created_at:\s*["']\d{4}-\d{2}-\d{2}["'](没括号)→ 复制结果含前缀,后续还得二次清洗 - 跨文件提取时,
Find in Files(Ctrl+Shift+F)结果带文件名和行号,不能直接用$1;得先粘贴到新标签页,再用^[^:]+:\d+:\s*(.*)$提取冒号后内容
提取后空白和换行混乱是默认行为,不是 bug
复制出来的日期之间可能夹着空行、多余空格,甚至 Windows 的 \r\n 混进 Unix 风格文本里——这不是 Sublime 抽风,而是它原样输出匹配结果的换行状态。
- 清理空行:
^$\n(开启正则)替换为空 - 统一空格:
[ \t\r\f\v\u3000\u00A0]+替换为单个半角空格 - 转数组格式(如 JS):
Ctrl+H输入\n→ 替换为", ",再手动补["开头和"]结尾 - ⚠️ 最容易被忽略的是:如果原始文本用了 CRLF(Windows 换行),而你当前视图设为 LF(Unix),
.可能无法跨行匹配,导致多行日期漏抓——右下角换行符标识要跟源文件一致











