Notepad++怎么删除每行指定字符后面的内容?正则批量处理教程

📅 最后更新:2026年7月22日

快速解决

按下Ctrl + H打开替换窗口。假设需要删除每行英文冒号:后面的内容,同时保留冒号,可以在“查找目标”中输入(?-s):\K.*$,“替换为”留空,将搜索模式选择为“正则表达式”,先点击“查找下一个”确认结果,再执行“全部替换”。
Notepad++怎么删除每行指定字符后面的内容

不同删除需求应该使用哪个表达式?

“删除指定字符后面的内容”通常分为两种情况:保留指定字符,或者把指定字符一起删除。

处理需求 查找目标 替换为
保留冒号,删除冒号后内容 (?-s):\K.*$ 留空
冒号及其后内容一起删除 (?-s):.*$ 留空
保留竖线,删除竖线后内容 (?-s)|\K.*$ 留空
竖线及其后内容一起删除 (?-s)|.*$ 留空
保留字符串ID= (?-s)ID=\K.*$ 留空
只处理当前选中的文本 使用对应表达式 勾选“选区内”

例如,原始文本为:

用户名:zhangsan
邮箱:[email protected]
城市:上海

使用:

查找目标:(?-s):\K.*$
替换为:留空
搜索模式:正则表达式

处理后得到:

用户名:
邮箱:
城市:

如果使用:

查找目标:(?-s):.*$
替换为:留空

结果则是:

用户名
邮箱
城市

方法一:保留指定字符,删除后面的全部内容

这是最常用的处理方式,适合保留字段名称和分隔符,只清除后面的数据。

以英文冒号为例:

姓名:张三
电话:13800000000
地址:北京市朝阳区

操作步骤如下:

  1. 使用Notepad++打开文本;
  2. 按下Ctrl + H打开“替换”窗口;
  3. 在“查找目标”中输入(?-s):\K.*$;
  4. 将“替换为”留空;
  5. 搜索模式选择“正则表达式”;
  6. 先点击“查找下一个”检查匹配范围;
  7. 确认无误后点击“全部替换”。

处理结果:

姓名:
电话:
地址:

表达式中各部分的作用如下:

表达式 作用
(?-s) 强制.不跨越换行
: 匹配指定字符
\K 保留前面已经匹配的内容
.* 匹配后面的任意字符
$ 匹配当前行结尾

Notepad++用户手册说明,替换窗口可以通过Ctrl + H打开;在正则表达式模式下,程序使用Boost正则表达式引擎。(?-s)可以确保点号只匹配当前行中的字符,不会跨越换行。具体规则可查看Notepad++查找与替换用户手册。
Notepad++怎么删除每行指定字符后面的内容

方法二:把指定字符及其后内容一起删除

不需要保留分隔符时,直接删除\K即可。

例如原文:

苹果|10元
香蕉|8元
橙子|12元

需要删除竖线以及后面的价格,可设置为:

查找目标:(?-s)\|.*$
替换为:留空
搜索模式:正则表达式

结果为:

苹果
香蕉
橙子

这里的竖线需要写成\|,因为|在正则表达式中代表“或者”,直接输入可能改变表达式含义。

其他常见特殊字符也建议进行转义:

实际字符 正则中写法
点号. \.
竖线` `
加号+ \+
星号* \*
问号? \?
左括号( \(
右括号) \)
反斜杠\ \\

如果指定内容是普通中文、字母或数字,通常可以直接填写。例如删除每行“备注”及其后面的内容:

查找目标:(?-s)备注.*$
替换为:留空

Boost正则语法将.[]{}()*+?|^$等字符作为具有特殊意义的符号;需要匹配这些字符本身时,应在前面添加反斜杠。(Boost)

方法三:删除每行最后一个指定字符后面的内容

一行中可能存在多个相同分隔符。例如:

产品|颜色|价格
手机|黑色|3999
电脑|银色|5999

如果只想删除最后一个竖线后面的价格,并保留前面的竖线,可以使用:

查找目标:(?-s)\|\K[^|]*$
替换为:留空
搜索模式:正则表达式

处理后:

产品|颜色|
手机|黑色|
电脑|银色|

如果最后一个竖线也要删除,则使用:

查找目标:(?-s)\|[^|]*$
替换为:留空

处理后:

产品|颜色
手机|黑色
电脑|银色

[^|]*表示匹配除竖线之外的任意字符。由于表达式后面带有$,它只能匹配一行中最后一个竖线及其后的内容。

如果分隔符是英文逗号,可以替换为:

(?-s),\K[^,]*$

如果分隔符是分号,则使用:

(?-s);\K[^;]*$

方法四:只处理包含特定关键词的行

有时不能删除所有行,只想处理带有特定关键词的内容。

例如:

用户:张三|已启用
用户:李四|已停用
管理员:王五|已启用

只删除以“用户:”开头的行中竖线后面的内容,可以使用:

查找目标:(?-s)^用户:.*?\|\K.*$
替换为:留空
搜索模式:正则表达式

处理后:

用户:张三|
用户:李四|
管理员:王五|已启用

表达式中的:

  • ^表示一行开头;
  • 用户:限定需要处理的行;
  • .*?匹配到后面的第一个竖线;
  • \K保留前面内容;
  • .*$删除竖线后的字符。

需要同时处理多个关键词时,不建议直接使用过于复杂的表达式。可以先分别测试每种格式,再执行批量替换。

如何删除指定字符串后面的内容?

指定目标不一定是单个字符,也可以是一段固定文字。

例如:

订单001 状态:已完成
订单002 状态:待付款
订单003 状态:已取消

保留“状态:”,删除后面的内容:

查找目标:(?-s)状态:\K.*$
替换为:留空

处理后:

订单001 状态:
订单002 状态:
订单003 状态:

连同“状态:”一起删除:

查找目标:(?-s)状态:.*$
替换为:留空

这类方法适合处理日志、网址参数、关键词列表、导出数据和批量生成的文本。

完成删除后,如果还需要把处理结果从多行转换成一行,可以继续参考Notepad++如何将多行文本合并为一行。

只修改文档中的部分内容

不希望影响整个文件时,可以使用“选区内”功能:

  1. 先选中需要处理的几行;
  2. 按下Ctrl + H;
  3. 填写查找和替换表达式;
  4. 勾选“选区内”;
  5. 点击“全部替换”。

Notepad++用户手册说明,勾选“In selection”后,“全部替换”只会作用于当前选中的文本范围,而不会修改整篇文档。

如果选中内容后没有看到“选区内”选项,可以重新选中文字,再打开替换窗口。

为什么正则替换没有效果?

搜索模式选错

使用上述表达式时,必须选择:

搜索模式:正则表达式

如果选择“普通”模式,\K、.*和$会被当作普通文字处理。

指定字符没有转义

例如需要处理竖线,却填写了:

|.*$

由于|具有正则语法含义,可能出现大量异常匹配。正确写法为:

\|.*$

勾选了“匹配换行”

虽然本文表达式增加了(?-s)限制,但仍建议不要随意勾选“.匹配换行”。否则其他没有加入限制的表达式可能从当前行一直匹配到文件末尾。

使用了中文和英文不同的符号

以下符号外观相似,但实际不是同一个字符:

中文符号 英文符号
: :
, ,
; ;
( (
) )

文本使用中文冒号时,表达式中也必须填写中文冒号。

部分行没有指定字符

没有包含指定字符的行不会被修改,这是正常结果。例如使用冒号表达式时,不带冒号的空行或标题行会自动保留。

表达式错误却没有明显提示

建议先点击“查找下一个”,确认表达式可以正常运行,再使用“全部替换”。Notepad++手册特别提醒,无效正则表达式的明确错误提示可能只会在执行“查找下一个”时显示。

常用场景速查表

目标 查找目标 替换为
保留冒号,删除其后内容 (?-s):\K.*$ 留空
删除冒号及其后内容 (?-s):.*$ 留空
保留中文冒号 (?-s):\K.*$ 留空
保留第一个竖线 (?-s)|\K.*$ 留空
删除第一个竖线及其后内容 (?-s)|.*$ 留空
保留最后一个竖线 `(?-s)|\K[^ ]*$`
删除最后一个逗号及其后内容 (?-s),[^,]*$ 留空
删除“备注=”后面的内容 (?-s)备注=\K.*$ 留空
只处理“用户:”开头的行 (?-s)^用户:.*?|\K.*$ 留空

操作前需要注意什么?

批量替换会一次修改大量文本,正式处理前建议:

  • 先按Ctrl + S保存原文件;
  • 使用“另存为”创建一个副本;
  • 先点击“查找下一个”检查匹配范围;
  • 先替换一处,确认结果后再全部替换;
  • 操作错误时立即按Ctrl + Z撤销;
  • 大型文件处理后检查开头、中间和结尾内容。

需要将处理后的代码发送到Word等软件,并保留语法高亮时,可以参考Notepad++如何将代码导出为RTF格式。

需要更新或重新安装程序时,可通过Notepad++中文官网查看对应版本与相关使用教程。

常见问题

如何删除每行第一个冒号后面的内容?

保留冒号时使用:

(?-s):\K.*$

连同冒号一起删除时使用:

(?-s):.*$

为什么表达式把整行都删除了?

通常是因为把“查找目标”写成了.*指定字符.*$,导致指定字符前面的内容也被匹配。需要保留前面内容时,应从指定字符开始匹配,或者使用\K。

如何删除每行最后一个逗号后面的内容?

保留最后一个逗号:

(?-s),\K[^,]*$

连同最后一个逗号删除:

(?-s),[^,]*$

能不能只处理选中的几十行?

可以。选中文本后打开替换窗口,勾选“选区内”,再点击“全部替换”。

如何保留指定字符前的空格?

本文提供的表达式不会主动删除指定字符前面的空格。需要清理行尾多余空格时,可以在完成替换后查找:

\h+$

替换为留空,即可删除每行末尾的水平空白字符。

总结

Notepad++删除每行指定字符后面的内容,核心操作是使用Ctrl + H打开替换窗口,并将搜索模式设置为“正则表达式”。

保留指定字符时,推荐使用:

(?-s)指定字符\K.*$

连同指定字符一起删除时,使用:

(?-s)指定字符.*$

当一行中存在多个相同字符时,可以通过否定字符集匹配最后一个分隔符。正式执行“全部替换”前,应先测试一处并保存原始副本,避免因字符转义、中文符号差异或匹配范围错误而误删内容。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注