在查找与替换窗口中选择“正则表达式”模式,就可以按规则批量查找或重组文本。本文介绍 Notepad++正则表达式 的常用语法、捕获组、替换引用和测试方法。基础界面操作可参阅Notepad++ 基础功能。
正则表达式描述的是文本模式
正则表达式用一组规则描述要查找的文本形状,而不是某段固定文字。例如,\d{4} 可匹配连续四位数字,^标题 可匹配行首的“标题”。

在 Notepad++ 中,正则模式适合按格式查找、提取匹配片段,或按捕获内容重新排列文本。语法支持情况以Notepad++ 用户手册的查找说明为准。不同编辑器的正则规则可能有差异,从其他工具复制表达式后,应先在 Notepad++ 中测试。
普通查找把输入内容视为字面文本,正则模式则会将部分符号解释为规则。比如普通查找中的 . 用来查找句点;正则模式中的 . 通常匹配一个非换行字符。要查找句点本身,应写成 \.。
本文聚焦语法与验证,不展开宏、批量清理或删除特定内容等任务。其他编辑技巧可参阅Notepad++ 使用教程。
Notepad++正则表达式查找与替换的分工
“查找目标”填写匹配规则,“替换为”填写命中后要写入的文本。查找表达式可以包含元字符和捕获组,替换内容则可以引用捕获组保存的片段。两处语法并不完全相同,尤其不要把查找表达式里的反向引用写法直接照搬到替换栏。
写表达式前,先确定需要匹配的文本边界。下面的例子查找“年-月-日”格式,再改成“月/日/年”:
| 输入文本 | 查找目标 | 替换为 | 预期结果 |
|---|---|---|---|
2026-10-22 |
(\d{4})-(\d{2})-(\d{2}) |
\2/\3/\1 |
10/22/2026 |
三个圆括号依次保存年、月、日,替换串中的 \1、\2、\3 按编号引用它们。实际操作前,先确认文档中的分隔符和数字位数与表达式相符。界面操作可参考查找与替换基础说明。
批量替换前,先在副本或小样本上检查命中范围、捕获内容和替换结果。确认执行范围后,再处理完整文件。
Notepad++正则语法:字符、元字符与字符组
字面字符和转义
字母、数字和多数普通标点可以直接写入表达式。若字符有特殊含义,则用反斜杠转义。例如,\. 匹配句点,\( 匹配左括号。表达式没有结果时,先检查是否把元字符当成普通字符使用,或漏写了转义符。
点号、或运算和字符组
| 写法 | 含义 | 示例与范围 |
|---|---|---|
. |
匹配一个字符,通常不跨行 | a.c 可匹配 abc、a-c |
[abc] |
匹配括号内任一字符 | 匹配一个 a、b 或 c |
[0-9] |
匹配指定范围内的一个字符 | 匹配一位数字 |
[^0-9] |
匹配不在范围内的一个字符 | 不匹配数字;范围按字符编码和引擎规则解释 |
| `a | b` | 匹配左侧或右侧模式 |
\d、\s、\w |
数字、空白、单词字符类别 | 具体覆盖哪些字符可能受引擎实现影响 |
方括号内的 ^ 表示取反;写在表达式开头时,^ 是行首锚点。同一符号的位置不同,作用也不同。处理中文、扩展字符或特殊空白时,不要仅凭简写类别推断覆盖范围,应先用小样本测试。
字符组 [A-Z] 表示一个大写拉丁字母,[A-Z0-9] 表示一个大写字母或数字。字符组每次只匹配一个字符;若要匹配连续多位,可配合量词,例如 [0-9]+。
量词、边界与分组控制匹配范围
量词作用于紧邻的字符或分组:* 表示零次或多次,+ 表示一次或多次,? 表示零次或一次,{3} 表示恰好三次,{2,5} 表示二至五次。若要让量词作用于一段模式,可用括号分组,例如 (?:ab)+。使用非捕获组前,应先查阅当前版本手册并实际测试。

^ 匹配行首,$ 匹配行尾。它们定位边界,不消耗字符。^Error 查找行首的 Error,Error$ 查找行尾的 Error。只需局部匹配时,不必添加锚点;若要求整行符合格式,可以同时使用两端锚点。
量词默认采用贪婪匹配,尽可能多地匹配内容。在量词后添加 ?,通常可以缩短匹配范围。比如文本 "甲" 和 "乙" 中,".*" 可能从第一个引号一直匹配到最后一个引号;".*?" 则倾向于逐段匹配引号之间的内容。复杂文本仍需测试,这种写法不能通用于所有嵌套结构。
捕获组与非捕获组
圆括号 (\d{4}) 会保存匹配片段,供替换内容引用,这就是捕获组。捕获组按左括号出现的顺序编号。非捕获组用于组合规则但不保存内容;其支持情况和语法细节应以当前手册为准。刚开始使用时,可以先用普通捕获组,并逐一核对编号。
正则表达式捕获组:提取并重排匹配内容
捕获组保存命中内容中的局部片段,替换字段中的反向引用则把这些片段写入新文本。它们不同于查找表达式中的反向引用:查找栏中的引用用于匹配与先前捕获内容相同的文本,替换栏中的引用用于输出捕获内容。
| 输入 | 查找目标 | 替换为 | 预期结果 |
|---|---|---|---|
Chen, Lin |
([^,]+),\s*(.+) |
\2 \1 |
Lin Chen |
这个表达式分别捕获逗号前后的两段,再交换顺序。若结果错位,检查左括号编号、表达式实际命中的内容,以及替换串中的引用写法。Notepad++ 的查找与替换语法请以用户手册为准,不要直接套用其他正则工具的替换规则。
在 Notepad++ 中测试表达式
先用小样本确认匹配范围
- 将几行真实格式的文本复制到测试副本。
- 写出查找模式,逐个确认符号的作用。
- 检查命中内容是否只覆盖目标片段。
- 使用捕获组时,核对每组保存的内容和顺序。
- 填入替换串,确认输出符合预期。
- 保存原文件副本,再执行替换并抽查结果。
执行前至少检查五项:当前模式是否选为正则表达式;大小写与范围选项是否符合任务;命中数量是否与样本相符;替换串中的组号是否正确;原文件是否有可恢复副本。若界面提供逐项确认或预览功能,先用它们检查,不要直接对唯一原件执行全量替换。
批量处理后,检查文件开头、中间和末尾,并抽查未命中的内容是否保持不变。结果异常时,停止后续操作并从副本恢复,不要在错误替换后的文本上继续叠加修补。
常见匹配问题的排查方法
没有匹配结果

确认正则模式已启用,括号和方括号成对,特殊字符已转义,锚点位置符合预期。再检查空格、制表符、大小写和实际换行形式。可以先缩短表达式,只保留最确定的一段,再逐步加回条件。
匹配范围过宽
检查 .*、.+ 等宽泛量词,再尝试缩小字符组、限定次数,或添加行首与行尾锚点。使用同一段样本文本比较贪婪与非贪婪写法,观察实际选中的起止位置。
捕获或替换引用不符合预期
按左括号出现顺序给查找模式中的捕获组编号,暂时只保留一个捕获组测试,并确认替换栏引用了正确编号。添加或删除括号可能改变后续组号。查找模式里的反向引用与替换栏里的组引用用途不同,不要混用。
表达式涉及换行
行首、行尾锚点与换行符不是同一概念。文本可能采用不同的换行编码,点号通常也不代表“跨任意多行”。先确定目标是单行还是跨行,再查看正则查找说明,并用包含两行内容的小样本验证。未确认跨行行为前,不要将表达式用于整份文件。
常用正则表达式速查
| 目标 | 模式 | 说明 |
|---|---|---|
| 连续数字 | \d+ |
一位或多位数字;字符类别范围应按实际文本验证 |
| 行首指定文字 | ^标题 |
只查找行首的“标题” |
| 行尾指定文字 | 完成$ |
只查找行尾的“完成” |
| 固定格式日期 | (\d{4})-(\d{2})-(\d{2}) |
捕获年、月、日后,可按组重排 |
| 转义句点 | \. |
匹配句点本身,而非任意字符 |
| 引号内的短片段 | ".*?" |
非贪婪匹配示例;复杂嵌套文本需另行测试 |
这些表达式适合作为起点,不是通用模板。字符编码、换行、大写小写选项和实际文件内容都会影响结果。先在样本上确认命中范围,再决定是否替换。产品信息可见Notepad++ 网站;有关 Scintilla 编辑组件的介绍可参阅维基百科:Scintilla 软件)。
来源
- Notepad++ 用户手册:查找与替换
- Scintilla 软件介绍,维基百科)