是否可以使用正则表达式解析PowerShell参数块

时间:2017-04-19 08:14:26

标签: regex powershell

我搜索正则表达式,从完整的PowerShell脚本中提取Powershell参数块。

[CmdletBinding()]
Param(
     [Parameter(Mandatory=$True,Position=1)]
     [string]$computerName,

     [Parameter(Mandatory=$True)]
     [string]$filePath
    )

...

同事意味着无法使用regualr表达式解析此结构。他说正则表达式不能计算param块内的开始和结束符号(...),这使得无法解析param块。

1 个答案:

答案 0 :(得分:1)

好消息:你的同事错了。
确实,简单正则表达式存在嵌套数据问题,但只有在无限级嵌套时才会出现这种情况。 在这个问题中对此进行了很好的解释:How to match string within parentheses (nested) in Java?

在您的情况下,即使是简单的正则表达式也可以起作用:

(?:\[[^\]]+\]\s*)*\$\w+

Working example

这会在$parameters之前找到[attributes]块。涉及的巢很少。这是一个天真的正则表达式,如果你有注释,带括号的字符串等,它就会失败。但是可以扩展正则表达式以支持这些情况。

更多要点: