我正在尝试分析多个目录中的大量 powershell 脚本,并且希望将任何 Catch 代码块拉入列表/变量中。
我正在尝试编写一个正则表达式来选择以下格式的任何块
Catch
{
write-Host "Function:",$MyInvocation.MyCommand,"Failed with exception:" "Error"
write-Host "Exception: $_" "Error"
throw "Exception: $_"
}
Catch{
write-Host "Function:",$MyInvocation.MyCommand,"Failed with exception:" "Error"
write-Host "Exception: $_" "Error"
throw "Exception: $_" }
Catch {write-Host "Function:",$MyInvocation.MyCommand,"Failed with exception:" "Error"
write-Host "Exception: $_" "Error"
throw "Exception: $_"}
基本上任何有 catch 后跟 {} 的地方,都会忽略单词“Catch”和大括号之间以及大括号之后的任何换行符,忽略大小写。
我也希望返回 {} 之间的全部内容,以便我可以对其进行一些额外的检查。
我想出的最好的办法是:
\b(\w*Catch\w*)\b.*\w*{\w.*}
如果全部在一行上,则将匹配。
我将在 powershell 中执行此操作,因此 .net 或 powershell 类型的正则表达式将不胜感激。
Thanks.