如何解决如何在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。