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

如何用PowerShell将Markdown代码块转为Reddit要求的格式?

解决Markdown代码块转Reddit格式的PowerShell脚本

可行解决方案

以下脚本可准确将Markdown的三个反引号代码块转换为Reddit要求的「每行前缀四个空格」格式:

$content = Get-Content -Path '.\InputExample.txt' -Raw

# 匹配并处理所有三个反引号包裹的代码块
$processedContent = $content -replace '(?s)(^|\n)`{3}\n(.*?)\n`{3}', {
    # 将代码块内容按行拆分,每行添加四个空格前缀
    $indentedLines = ($args[0].Groups[2].Value -split '\r?\n') | ForEach-Object { "    $_" }
    # 用空行分隔转换后的代码块与其他内容
    "`n`n" + ($indentedLines -join "`n") + "`n`n"
}

# 清理多余的连续空行,保证格式整洁
$processedContent = $processedContent -replace '\n{3,}', "`n`n"

# 将结果写入输出文件
$processedContent | Set-Content -Path '.\OutputResult.txt' -Encoding UTF8

原尝试失败原因分析

  1. 单行正则限制:你之前用的^```\n(.*)````属于单行匹配,.*`无法识别换行符,只能处理单行代码块,完全不适用于多行内容。
  2. 局部替换不彻底:{3}(\r?\n)仅替换了开头的反引号和换行,既没处理代码块内的每行,也没移除结尾的三个反引号,自然达不到预期效果。

脚本核心逻辑说明

  • Get-Content -Raw:一次性读取整个文件内容,保留原始换行符,确保跨行代码块能被完整匹配。
  • (?s):开启正则的「单行模式」,让.可以匹配换行符,实现跨行内容的捕获。
  • 脚本块替换:通过脚本块对捕获到的代码内容逐行处理,为每行添加四个空格前缀,同时用空行分隔转换后的代码块与其他文本。
  • 空行清理:用\n{3,}匹配连续三个及以上空行,替换为两个空行,保证输出格式与示例一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:20:23