首页 > 解决方案 > 获取变量中的匹配字符串

问题描述

我正在尝试从变量中获取匹配的字符串。

例如,

$out = "Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\{F1E1501C-B95C-42E0-BFD4-757DF1B961D1}"

我需要里面的值"{ }"

标签: powershell

解决方案


您可以为此使用正则表达式:

$out = "Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall{F1E1501C-B95C-42E0-BFD4-757DF1B961D1}"

$out -match "^.*{(?<guid>.*)}$" | Out-Null

然后,您可以像这样访问该值:

$matches.Guid

-match产生一个布尔值,让您知道它是否成功。在这里,我通过将其发送到 来丢弃它Out-Null,但是您可以使用它来决定是否应该继续,例如,将其包装在一个if

if ($out -match "^.*{(?<guid>.*)}$")
{
   # Do something
}

请注意,您可以使用此处提到的模式获得更准确的 GUID 匹配:

GUID 的正则表达式


推荐阅读