【发布时间】:2020-12-04 03:11:57
【问题描述】:
我正在尝试在 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"。要测试的字符串应该出现在左边,而正则表达式模式应该出现在右边。 -
我将问题缩小到非常简单的匹配。是的,绕过它的方法有效,但在这种情况下不起作用:“here.is.some.text”-match“Some Text”。
-
正如@boxdog 试图解释的那样,用于测试 with 的正则表达式模式应该位于
-match运算符的右侧。您评论的示例使用了一个根本不是正则表达式模式的文字字符串(带空格)。 -
标题太笼统了。因此,对于 “PowerShell 模糊字符串匹配” 之类的查询,此问题会出现在搜索引擎结果中。一个更规范的问题是:PowerShell and the -contains operator(答案涵盖了
-Contains(用于集合)、-match/-imatch(正则表达式字符串匹配)和-like之间的区别,-ilike(类似 SQL 的匹配))
标签: string powershell match