notepad++正则需按场景精准设计:删多余空格应保留缩进层级,用^ {1,4}(?=(?!if|else|...));提取双引号内容用"(1*)"→field_$1;删空白行用^[ ]*$ ?;路径反斜杠替换需限定范围防误改。" ↩

替换行首空格但保留缩进层级
很多人想用正则一键删掉每行开头的多余空格,结果把 if 块里的缩进也干掉了。关键不是“删空格”,而是“删行首连续空格中超出缩进基准的部分”——但 Notepad++ 没有上下文感知,所以得靠规则约定:比如只删行首 1~4 个空格,且该行不以制表符或常见代码关键字开头。
实操建议:
- 用
^ {1,4}(?=(?!if|else|for|while|def|class| ))匹配「行首 1–4 个空格,且后面不是关键字或制表符」,替换为空(即删除) - 更安全的做法是先人工确认缩进风格:如果项目统一用 2 空格缩进,就搜
^ {3,}替换为(两个空格),避免过度修剪 -
^ +看似简单,但会误杀所有缩进;^[ ]+同理,除非你明确要转为纯 Tab 缩进
提取双引号内字符串并加前缀
比如把 "user_id" → field_user_id,常用于 SQL 字段映射或 DTO 属性重命名。Notepad++ 的替换不支持函数式处理,但能用捕获组+静态前缀搞定。
实操建议:
- 查找:
"([^"]*)"—— 注意[^"]*比.*?更可靠,避免跨引号匹配 - 替换:
field_$1——$1是第一个捕获组内容,不是(后者在 Notepad++ 的替换框里无效) - 若需大小写转换(如
"user_id"→fieldUserId),Notepad++ 原生不支持,得先用正则提出来,再配合插件Python Script或导出到 VS Code 处理
删除空行和仅含空白字符的行
现象:
或
这类“看似空”的行,在 JSON、YAML 或配置文件中容易引发解析错误。
实操建议:
- 查找:
^[ ]*$R?——^行首,[ ]*零或多个空格/Tab,$行尾,R?可选换行符(适配 CRLF/LF) - 替换留空,勾选「匹配换行符」选项(否则
$不会匹配到含换行的空行) - 别用
手动替换:Windows 和 Unix 换行符混杂时会漏掉;也别用^s*$,因为 Notepad++ 的s不包含R,无法匹配换行本身
批量修正 Windows 路径反斜杠为正斜杠
从命令行复制路径如 C:Users
ameile.txt 到脚本中,常需改成 C:/Users/name/file.txt 才被 Python/Shell 正确识别。
实操建议:
- 查找:
\(注意:需输入两个反斜杠,Notepad++ 正则引擎里一个是转义符) - 替换:
/ - ⚠️ 风险点:如果文本里已有转义序列如
\n或正则元字符如d,直接全局替换会破坏逻辑;应先用Ctrl+F定位到路径区域(如引号内、等号右侧),再启用「在选中文本中查找」模式操作 - 进阶:若路径含盘符且需统一小写,得拆两步——先
^([A-Z]):替换为L$1:(但 Notepad++ 不支持L,只能手动或借助宏)











