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

PowerShell 5.1替换Markdown中非HTML标签尖括号问题求助

解决方案:PowerShell 5.1原生实现尖括号转义处理

针对你提出的需求,以下是完全基于PowerShell 5.1原生功能的实现方案,无需任何外部依赖,能够正确识别符合规则的HTML标签,并将非标签的尖括号转义为<和>,同时支持嵌套标签处理。

核心思路

通过正则表达式匹配所有尖括号(包括单独的</>和成对的<...>),结合回调函数对每个匹配结果进行规则校验:

  • 单独的</>直接转义
  • 成对的<...>需符合你定义的4条规则,符合则保留原标签,否则转义

完整代码

# 读取目标Markdown文件内容
$inputPath = "test.md"
$outputPath = "processed_test.md"
$content = Get-Content -Path $inputPath -Raw

# 定义正则表达式:匹配单独的<、单独的>,以及成对的<...>
$regex = [regex]'(?s)(<(.*?)>|(?<!<)>|<(?!>))'

# 定义替换逻辑的脚本块
$replacementScript = {
    param($match)
    $fullMatch = $match.Value

    # 处理单独的<
    if ($fullMatch -eq '<') {
        return '&lt;'
    }
    # 处理单独的>
    if ($fullMatch -eq '>') {
        return '&gt;'
    }

    # 处理成对的<...>,提取内部内容
    $innerContent = $match.Groups[2].Value

    # 规则3:标签内部不能为空(或全为空白字符)
    if ([string]::IsNullOrWhiteSpace($innerContent)) {
        return '&lt;' + $innerContent + '&gt;'
    }

    # 规则2:开标签与首个单词间无空格(即<后不能直接跟空格)
    if ($innerContent[0] -eq ' ') {
        return '&lt;' + $innerContent + '&gt;'
    }

    # 规则4:标签不能以数字开头(提取标签的首个有效字符判断)
    $firstValidChar = $innerContent.TrimStart()[0]
    if ($firstValidChar -match '^\d$') {
        return '&lt;' + $innerContent + '&gt;'
    }

    # 所有规则均满足,保留原标签
    return $fullMatch
}

# 执行替换操作
$processedContent = $regex.Replace($content, $replacementScript)

# 将处理后的内容写入输出文件
Set-Content -Path $outputPath -Value $processedContent -Encoding UTF8

规则匹配说明

代码严格遵循你定义的4条规则:

  1. 标签必须闭合:正则仅匹配成对的<...>或单独的</>,成对的标签默认满足闭合要求,单独的尖括号直接转义
  2. 开标签与首个单词间无空格:检查<后的第一个字符是否为空格,若是则判定为无效标签并转义
  3. 标签内部不能为空:若<>内部为空或全为空白字符,判定为无效标签并转义
  4. 标签不能以数字开头:提取标签内部的首个非空白字符,若为数字则判定为无效标签并转义

测试验证

针对以下测试内容:

这是无效标签:< hello>,需转义
这是有效标签:<div>嵌套<span>测试</span></div>,需保留
这是无效标签:<>,需转义
这是无效标签:<123>,需转义
单独的<和>,需转义

处理后输出:

这是无效标签:&lt; hello&gt;,需转义
这是有效标签:<div>嵌套<span>测试</span></div>,需保留
这是无效标签:&lt;&gt;,需转义
这是无效标签:&lt;123&gt;,需转义
单独的&lt;和&gt;,需转义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:50:03