You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中-replace正则匹配换行失效 HTML空行清理问题排查

问题原因

PowerShell 基于.NET 正则引擎,默认未开启多行模式,此时正则中的^仅匹配整个字符串的最开头,$仅匹配整个字符串的最末尾,自然无法匹配到文件中间的空行行首,这就是你写的正则在默认开启多行匹配的VSCode中生效、在PowerShell中不生效的核心原因。

解决方法

给正则添加内联多行模式修饰符(?m),同时调整匹配逻辑适配行尾规则,修改后的脚本如下:

Remove-Item $args[1]
$text = (Get-Content -Path $args[0] -Raw)
# 开启多行模式,匹配所有全空白行并删除
$text = $text -replace '(?m)^\s*$(\r?\n)?'
New-Item -Path $args[1] -ItemType File -Force -Value $text

补充说明

  • 修饰符(?m)会让^、$匹配每一行的行首和行尾,符合你按行匹配空白行的需求
  • 正则末尾加(\r?\n)?是为了同时删掉空行自带的换行符,避免替换后留下多余的空行
  • 推荐用单引号包裹正则表达式,避免PowerShell的转义规则和变量解析逻辑干扰正则内容

内容的提问来源于stack exchange,提问作者Jakob Lovern

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:06:04