用Notepad++正则删整行需匹配整行及换行符,推荐^.*pattern.*\R?替换为空,\R兼容各种换行符;删空行用^\s*$\R?;注意关闭“.匹配换行符”,开启“正则表达式”模式。

怎么用 Notepad++ 正则匹配并删除整行
Notepad++ 的「查找 → 替换」里,正则模式下不能直接“删行”,得靠替换成空来实现。关键是让整个行(含换行符)被 ^.*pattern.*$ 匹配到,再替换成空字符串——但要注意 $ 默认不匹配行尾的 \r\n,所以必须打开「扩展模式」或用 \R。
-
^匹配行首,$匹配行尾(不含换行符),所以只写^pattern$只删内容,留空行 - 真正删整行(含换行符),推荐用
^.*pattern.*\R?:其中\R是 Notepad++ 扩展正则,能匹配\r\n、\n或\r - 勾选「匹配整个字符串」没用,那是给普通查找用的;正则删行只看「查找目标」和「替换为」是否覆盖了换行符
- 如果文件是 Unix 换行(
\n),而你用了\r\n,会漏删;统一用\R更稳
删除包含某关键词的行(比如含 “TODO” 或 “debug”)
这是最常用场景。别手抖写成 TODO 就替换,那样只删关键词本身。要删整行,就得把上下文包进来。
- 查找目标填:
^.*TODO.*\R?——.*吃掉前后任意字符,\R?让最后一行(没换行符)也能被删 - 替换为留空(什么也不填)
- 确保「搜索模式」选的是「正则表达式」,且「. 匹配换行符」**不要勾**,否则
.*会跨行吞掉多行 - 大小写敏感?如果
todo和TODO都要删,加(?i)前缀:(?i)^.*todo.*\R?
删除空行或只含空白字符的行
空行删不干净,往往是因为看着空,其实有空格、制表符或不可见 BOM。用 ^\s*$\R? 最准。
-
\s在 Notepad++ 正则里默认包含空格、\t、\r、\n,比写[ \t]省心 -
^$不管用——它不匹配带空格的“伪空行”;^\s*$才是真判断“只有空白” - 如果文件开头有 UTF-8 BOM(
\xEF\xBB\xBF),\s不吃它,得单独处理:先搜\xEF\xBB\xBF替换为空,再删空行 - 删完可能多出连续空行,可再跑一遍
\R{2,}→\R合并
为什么删着删着少了几行或格式乱了
不是正则写错了,大概率是换行符处理和匹配边界出了问题。
- 没勾「正则表达式」模式,却写了
^$—— 这些符号当字面量处理,自然不生效 - 用了
$却没关「. 匹配换行符」,导致.*吞掉换行,一次删多行 - 替换时忘了清空「替换为」框,比如填了空格,结果每行变空格+换行,看着像删了,实际占位还在
- 大文件慎用「全部替换」:Notepad++ 正则在超大文件里可能卡死或截断,先「查找全部」看命中的行数,心里有底再换
真正麻烦的不是语法,是换行符类型混杂 + 不可见字符干扰。动手前先用「视图 → 显示符号 → 显示所有字符」看看真实结构,比硬猜快得多。

















