如何在PowerShell中匹配字符串

问题描述

我正在尝试在PowerShell中匹配字符串,但无法获取True。

"one.two" -match "One Two"
False

好吧,也许我提供的问题信息太有限了。 因此,这里有更多信息。我有以下代码:

$userRoles = @('User','Customer Support');
$adGroups = @('ad.group.user','ad.group.customer.admin');
$userRoleToAdGroup = @{};
foreach ($userRole in $userRoles) {
    $adGroupsMatch = @($adGroups -match "$userRole")
    $userRoleToAdGroup.Add($userRole,$adGroupsMatch)
}
$userRoleToAdGroup

对于客户支持,输出值为空。

解决方法

此处“一”和“二”之间的空格将按字面匹配“一二”。如果要匹配它们之间的任何字符,请使用:

"one.two" -match "One.Two"

在正则表达式.中的含义是任何字符。或者您可以追加

* = 0 or more instances of previous charcter
+ = 1 or more instances of previous charcter
? = 0 or 1 instances of previous charcter
\w = match any word
\d = match any digit
\s = match any whitespace
{n,m} = match n to m instances of previous charcter
,

我不确定您要实现的目标,但您应该了解PowerShell语法和-match运算符。

匹配正则表达式时,匹配Customer Support这样的角色名称实际上只是匹配相同的字符串。使该匹配 like 通配符的一种方法是

$String = "Customer Support"
$MatchString = "($($String -replace '\s+','|'))"
'ad.group.customer.admin' -match $MatchString
True

此代码将$String中的所有空格分割并将其合并到合法的正则表达式查询"(Customer|Support)"中。

注意

此代码将匹配其中包含单词“ customer”和/或“ support”的任何字符串。

'ad.group.user.support' -match $MatchString
True

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...