正则表达式忽略下一场比赛

Regex ignores next match

提问人:Smorkster 提问时间:5/22/2023 最后编辑:Smorkster 更新时间:5/22/2023 访问量:68

问:

我需要 .NET RegEx 方面的帮助来提取信息。

我匹配的文本描述了 PowerShell 函数,并用于 GUI。因此,匹配项将作为参数添加到对象中。各参数说明如下:

  • 名称是句点后的第一个单词。这是。InfoType
  • 如果 是,则下一个单词是变量名称,后跟该变量的描述InfoType.InputData
  • 参数说明为全文至下InfoType
  • 如果 之后没有单词,例如“NoRunspace”,则 InputVar 和 InputComment 应为空。InfoType

到目前为止,我想出的最好的模式(见下文)删除/忽略了 .InfoType.NoRunspace

模式:

(?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)

由于某种原因,“InputData”不匹配,所以我无法从文本中使用它。

如何更改模式以在“NoRunspace”之后也包含文本?

.NET 正则表达式 PowerShell

评论

1赞 Destroy666 5/22/2023
请提出一个以字符结尾的特定问题,并显示上述文本的预期输出,因为我不确定问题是否只是最后一个“”不匹配或其他任何原因。?InfoType
1赞 Santiago Squarzon 5/22/2023
你的问题到底是什么?
1赞 InSync 5/22/2023
同前。我得到了前三个要求,但没有得到第四个要求(即“这应该作为 PowerShell 函数开关参数处理”);虽然这可能只是因为我不知道 PowerShell。也许你的意思是像这样的前瞻条件组?
0赞 Santiago Squarzon 5/22/2023
使用 或 .Regex.MatcesSelect-String -AllMatches
1赞 zett42 5/23/2023
如果您使用基于注释的标准帮助格式,则可以用于解析,而不必重新发明轮子。 实际上返回一个可以查询的对象。它包含函数描述、参数数组等。Get-HelpGet-Help

答: 暂无答案