要删除以特定字符开头或结尾的整行,需使用锚定正则:^开头模式.$匹配整行,如^//.*$删注释;删行尾字符需用^.结尾符$;注意元字符转义、换行符统一及全角空格兼容。

删以特定字符开头的整行(比如 //、#、>)
直接搜 // 然后 Replace All,只会把文本里的 // 删掉,留下后面代码和换行符,结果是半截行、缩进错乱。真正要删的是“整行”,必须用锚定正则。
操作步骤:
Ctrl+H → 勾选右下角 .*(启用正则)→ Find What 输入 ^//.*$ → Replace With 留空 → Replace All。^ 锚定行首,$ 锚定行尾,.* 匹配中间任意内容(不含换行符,前提是关掉 . matches newline)。
- 删 Python 注释:用
^#.*$ - 删 Markdown 引用块:
^>.*$ - 删带编号前缀的行(如
1.):^d+.s+.*$(注意空格和点号要转义) - 如果前缀含正则元字符(如
[、(),必须转义:^[ERROR].*$
删以特定字符结尾的整行(比如逗号、分号、反斜杠)
行尾匹配的关键是 $,但它只认“行末位置”,不自动包含换行符。所以删掉行尾字符后,换行符还在,不会影响上下文结构。
例如删所有以逗号结尾的行:
Find What 输入 , $(注意逗号后加空格再 $ 是常见误写;正确写法是 , $ 仅匹配逗号+行尾,但这样只删逗号,不删整行)——你要删整行,就得写成 ^.*, $。
- 删以分号结尾的 JS 行:
^.*;$ - 删以反斜杠续行的行(如 shell 脚本):
^.*\$(反斜杠需双写\) - 删行尾有多个空格+句点的行:
[ ]*.$→ 但这是删句点,不是整行;要删整行就写^.*[ ]*.$ - 别漏掉空格干扰:有些行看着以
,结尾,实际后面还有空格或制表符,用,s*$更稳妥
删含特定前缀+后缀组合的整行(比如 /* ... */ 块内单行注释)
这种不是简单锚定首尾,而是匹配“整行内容恰好被前后标记包裹”。比如一行写满 /* TODO: fix this */,你想整行干掉。
写法:^/*.**/$ —— 注意 * 和 / 都是正则元字符,必须转义:* 和 /。
- 匹配
[[deprecated]]整行:^[[deprecated]]$ - 匹配带引号包围的配置项:
^".*"$(但会误杀"foo", "bar"这种多值行;更安全写法是^".*"$s*$+ 关闭. matches newline) - 如果前后缀之间有固定格式(如
log: ERROR),优先用^log:s+ERROR.*$,比模糊.*ERROR.*更准 - 别开
. matches newline:否则.*可能吞掉换行符,把两行当一行删
为什么删完还剩空行?换行符混用是真坑
Ctrl+Shift+K 删行时连换行符一起删,但 ^s*$ 这类正则依赖换行符边界。如果文件里同时存在
(Unix)和
(Windows),$ 在某些引擎里可能无法稳定锚定到行尾。
最稳做法:
File → Line Endings → 选 Unix (LF) 或 Windows (CRLF) 统一格式,再执行正则替换。
- 删空行时,
^s*$比^s*更兼容——后者在文件末尾无换行符时会漏掉最后一空行 - 统一换行符后,
Find All显示的命中数才可信;没统一前,点Find All可能少算几行 - 中文文档粘贴进来常带全角空格(
u3000)、零宽空格(u200b),普通s不匹配它们;真要清理,得写成^[su200bu3000]*$
真正容易被忽略的是:正则删完,文件末尾可能没换行符。CI/CD 或 Python 解释器会报 warning,记得补一个——Ctrl+Shift+P → Insert Final Newline。这不是锦上添花,是刚需。











