notepad++中保留特定符号需用正则否定字符组删除非目标字符,如1,并预览避免误删;处理整行筛选宜用书签标记法,兼顾utf-8兼容性与结构安全。@#$%\r\n\t \w ↩

Notepad++ 保留特定特殊符号(如 @ # $ %)的实操路径
不能直接“保留符号”,只能靠「删除非目标字符」来间接实现。核心逻辑是:用正则匹配所有不想留的字符,替换成空;而你要保留的符号,必须明确排除在匹配范围之外。
常见错误是写 [^@#$%] 就开干——这会把字母、数字、汉字、空格、换行符全删光,只剩孤零零的符号,结果变成一串紧贴的 @#$%@#$%,完全不可读。
- 先确认你要保留的符号是否含正则元字符:比如
.、+、[、^、$等,必须转义,[$]才对,$单独写会匹配行尾 - 若还需保留换行符、空格、制表符、数字或英文字母,就得把它们显式加进否定字符组里,例如:
[^@#$%\r\n\t \w](\w包含字母、数字、下划线) - 中文、emoji、全角标点等 Unicode 字符不会被
\w或 ASCII 范围覆盖,如果要一起留下,得补上[^\x00-\x7F@#$%\r\n\t ]这类组合,但风险高——容易漏掉或误吞 - 执行前务必点「查找全部」预览:右侧结果窗会列出所有将被删除的字符位置,快速判断是否过杀
想只留符号+换行符?用 ^.*$ 配合书签更安全
当目标不是“每行留几个符号”,而是“只留含 @ 或 # 的整行”,那就别碰字符级替换——改用「行级筛选」,避免破坏结构。
比如日志里只想看带 @ 的调试信息行,其他全扔掉:
- 按
Ctrl + F打开查找,切到「标记」页,勾选「标记所在行」 - 填入正则:
@(或更稳一点:(?i)@\w+忽略大小写并匹配后续单词) - 点「标记全部」,左侧会出现蓝色圆点标记所有匹配行
- 再按
Search → Bookmark → Remove Unmarked Lines,未被点蓝的行瞬间消失 - 最后清除书签:
Search → Bookmark → Clear All Bookmarks
这个流程不碰单个字符,不担心 UTF-8 截断、不误删行首缩进,适合处理带格式的日志、配置片段或代码注释。
[^\x00-\x7F@#$%] 是最稳的“删非ASCII+指定符号”起点
如果你真要提取符号本身(比如从一段混合文本中抠出所有邮箱符号 @ 和域名分隔符 .),且文件是 UTF-8 编码,[^\x00-\x7F@#$%.] 比 [^\u4e00-\u9fff@#$%.] 更可靠——后者在 Notepad++ 旧版引擎里可能不识别 \u 形式,前者兼容所有版本。
-
\x00-\x7F锁定 ASCII 区(英文、数字、基本标点),其余全是“可删项” - 你加进去的
@#$%.就是白名单,不会被删;但注意:这个表达式也会放过所有中文、日文、emoji——如果你不想要,就得换策略 - 替换时「替换为」留空,勾选「正则表达式」,取消勾选「. 匹配换行符」,否则
.会跨行吃掉整块内容 - 执行后可能出现连续换行或空格堆叠,再补一刀
^\s*$\R?删空行即可收尾
真正难的不是写正则,是判断“哪些该留”
用户常卡在第一步:没想清楚“保留符号”到底要达成什么效果。是做数据清洗?提取 token?还是为下一步 grep 做准备?
比如删掉所有非 @ 符号后,得到 @@@,这毫无意义;但若目标是提取邮箱中的 @ 位置用于定位,那就要配合 ^.*?(@).*$ + 「替换为 $1」+ 「匹配新行」才能拿到带上下文的符号行。
最易忽略的是编码隐性影响:ANSI 文件里用 [\u4e00-\u9fff] 会完全失效,而 [^\x00-\x7F] 仍能抓到汉字——但如果你没提前转码,看到的可能是乱码,而不是匹配失败。











