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

修正.NET正则表达式,解决PowerShell元数据InputData匹配缺失问题

.NET正则表达式匹配PowerShell函数注释时丢失.InputData项

需求说明

提取PowerShell函数注释中的信息,规则如下:

  • 信息类型(InfoType)为句点后的第一个单词
  • 若InfoType为.InputData,则下一个单词是变量名,后续为变量描述
  • 参数描述为直至下一个InfoType前的所有文本
  • 若InfoType后无内容(如.NoRunspace),则对应值为空

当前问题

使用以下正则模式时,.InputData及其内容未被匹配:

(?m)^\s*\.(?<InfoType>(?!(Parameter)|(Outputs))\w+)\s*((?<InputVar>\w+)\s*?(?<InputComment>.*))*

待匹配文本

.Synopsis
    Jämför behörighetsgrupper mellan användare
.MenuItem
    Jämför behörighetsgrupper
.Description
    Jämför behörighetsgrupper mellan användare
.SearchedItemRequest
    Allowed
.OutputType
    ObjectList
.InputData
    Användare Lista på användare, separeras med mellanslag
.NoRunspace
.Author
    Some One (Else)

当前输出

Synopsis            : Jämför behörighetsgrupper mellan användare
MenuItem            : Jämför behörighetsgrupper
Description         : Jämför behörighetsgrupper mellan användare
SearchedItemRequest : Allowed
OutputType          : ObjectList
NoRunspace          : 
Author              : Some One (Else)

期望输出

Synopsis            : Jämför behörighetsgrupper mellan användare
MenuItem            : Jämför behörighetsgrupper
Description         : Jämför behörighetsgrupper mellan användare
SearchedItemRequest : Allowed
OutputType          : ObjectList
NoRunspace          : 
InputData           : Användare Lista på användare, separeras med mellanslag
Author              : Some One (Else)

解决方案

原正则的问题是仅匹配当前行的内容,无法跨行捕获InfoType下方的描述文本。修改后的正则支持跨行匹配,直到下一个InfoType出现:

(?m)^\s*\.(?<InfoType>(?!Parameter|Outputs)\w+)\s*(?<Content>(?:\n?\s*(?!^\s*\.\w+).)*)

正则说明

  • (?m):启用多行模式,让^和$匹配每行的开头和结尾
  • ^\s*\.(?<InfoType>(?!Parameter|Outputs)\w+):匹配以任意空白+点开头的信息类型,排除Parameter和Outputs
  • (?<Content>(?:\n?\s*(?!^\s*\.\w+).)*):捕获所有后续内容,包括换行和空白,直到遇到下一个以空白+点开头的InfoType为止

如果需要在正则中直接拆分.InputData的变量名和描述,可以使用分支条件:

(?m)^\s*\.(?<InfoType>(?!Parameter|Outputs)\w+)\s*(?(?=InputData)(?<InputVar>\w+)\s*(?<InputComment>.*)|(?<Content>(?:\n?\s*(?!^\s*\.\w+).)*))

效果验证

使用修改后的正则匹配待匹配文本,即可正确捕获.InputData及其内容,得到符合期望的输出结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:39:55