Я пытаюсь проанализировать множество сценариев 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» и фигурными скобками и после фигурных скобок, игнорируя регистр.
Я хочу, чтобы все содержимое между {} также было возвращено, чтобы я мог выполнить некоторые дополнительные проверки.
Лучшее, что мне удалось придумать, это:
\b(\w*Catch\w*)\b.*\w*{\w.*}
Что будет совпадать, если все это на одной строке.
Я буду делать это в powershell, так что приветствуется регулярное выражение типа .net или powershell.
Спасибо.