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

如何编写正则匹配PowerShell的#注释并排除<#...#>内联注释

PowerShell单行#注释匹配正则(JS/TS环境适用)

最终推荐正则

const singleLineCommentRegex = /(?<!<)#(?!>).*$/gm;

规则说明

核心逻辑通过负向断言过滤PowerShell块注释标记,实现逻辑极简:

  • (?<!<):负向后行断言,确保匹配的#前面不是<,直接排除块注释起始标记<#
  • (?!>):负向前瞻断言,确保匹配的#后面不是>,直接排除块注释结束标记#>
  • .*$:匹配#之后到当前行尾的所有内容
  • 修饰符gm开启全局匹配、多行模式,适配逐行解析需求

覆盖&排除场景

  • 正常匹配场景:
    • 整行注释:# 示例整行注释
    • 代码后带空格的注释:Get-Process # 查看当前运行进程列表
    • 代码后无空格紧随的注释:$totalCount=10#给统计变量赋初始值
  • 自动排除场景:
    • 整行块注释:<# 这是整行块注释内容 #>
    • 行内内联块注释:Write-Output <# 临时注释掉的测试参数 -Path ./test #> -Path ./prod
    • 所有紧邻</>的#标记都会被排除

边界说明

该实现优先保证逻辑简单,符合可接受少量边界异常的要求:仅不兼容字符串字面量中包含#的场景,比如Write-Host "内容里带#的字符串"中的#会被误识别为注释,如需兼容该场景需要额外增加字符串匹配过滤逻辑,复杂度会大幅提升,不符合当前需求的优先级设定。

内容的提问来源于stack exchange,提问作者U. Bulle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:36:03