我搜索正则表达式,从完整的PowerShell脚本中提取Powershell参数块。
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True,Position=1)]
[string]$computerName,
[Parameter(Mandatory=$True)]
[string]$filePath
)
...
同事意味着无法使用regualr表达式解析此结构。他说正则表达式不能计算param块内的开始和结束符号(...),这使得无法解析param块。
答案 0 :(得分:1)
好消息:你的同事错了。
确实,简单正则表达式存在嵌套数据问题,但只有在无限级嵌套时才会出现这种情况。
在这个问题中对此进行了很好的解释:How to match string within parentheses (nested) in Java?
在您的情况下,即使是简单的正则表达式也可以起作用:
(?:\[[^\]]+\]\s*)*\$\w+
这会在$parameters
之前找到[attributes]
块。涉及的巢很少。这是一个天真的正则表达式,如果你有注释,带括号的字符串等,它就会失败。但是可以扩展正则表达式以支持这些情况。
更多要点: