notepad++正则替换需启用「正则表达式」模式,否则\d{4}-\d{2}-\d{2}等写法无效;匹配yyyy-mm-dd用(\d{4})-(\d{2})-(\d{2}),替换为$3/$2/$1;注意括号英文半角、反向引用用$1非\1、不支持命名组和\b。

Notepad++ 正则替换识别 YYYY-MM-DD 格式失败?先确认启用「扩展模式」还是「正则模式」
Notepad++ 默认的「普通」和「扩展」搜索模式不支持 \d{4}-\d{2}-\d{2} 这类写法,必须手动切换到「正则表达式」模式(搜索框下方勾选),否则所有 \d、+、{} 都被当字面量处理。常见错误是写了 (\d{4})-(\d{2})-(\d{2}) 却没勾选,结果一条都匹配不到。
注意:Notepad++ 的正则引擎是 PCRE 变种,但不支持命名捕获组(如 (?<year>\d{4})</year>),只认位置编号 $1、$2;也不支持 \b 单词边界,需用 (? 等模拟。
把 2023-12-25 替换成 25/12/2023:用 $1 $2 $3 控制分组顺序
匹配模式:(\d{4})-(\d{2})-(\d{2})
替换为:$3/$2/$1
关键点:
- 括号必须是英文半角,中文括号
()会直接报错或失效 - 月份和日期若含前导零(如
2023-01-05),$2和$3会保留零;不需要零可改用(0?)(\d)拆解,但更推荐后续用 Excel 或脚本清洗 - 如果文本中混有时间(如
2023-12-25 14:30),建议加边界限制:(?,避免误匹配 IP 或版本号
处理不规范输入:2023/12/25、2023.12.25、2023年12月25日怎么统一?
不能指望一个正则通吃所有格式。得按实际混杂情况分批处理:
- 斜杠/点号:
(\d{4})[/\.](\d{1,2})[/\.](\d{1,2})→$1-$2-$3(先统一成标准格式,再第二步转目标格式) - 中文日期:
(\d{4})年(\d{1,2})月(\d{1,2})日→$1-$2-$3(注意「年」「月」「日」是中文字符,不能写成英文) - 单数字月份/日期(如
2023-1-5)会被上一条\d{2}漏掉,必须改用\d{1,2}并确保前后无数字干扰,否则可能匹配到12345-6-7中的345-6-7
建议先导出全部疑似日期行(用「标记」功能 + 正则匹配高亮),人工抽检后再批量替换,避免脏数据扩散。
为什么替换后出现 $1 $2 而不是实际数字?检查反向引用语法和引号
Notepad++ 要求反向引用必须用美元符加数字,即 $1,不是 \1(那是旧版 POSIX 写法,这里无效)。另一个高频坑是:在「替换为」框里误打了全角空格或中文标点,导致 $1 被截断或识别失败。
验证方法:先用简单替换测试,例如把 abc 替换为 $0($0 表示整个匹配内容),看是否输出 abc;能成功,说明语法环境正常。
真正麻烦的是嵌套场景——比如某行同时含多个日期,或日期在引号/括号内。这时正则容易跨区域匹配,宁可拆成多次替换,也不要强行写超长表达式。











