首页 > 解决方案 > 匹配句子中的连续单词

问题描述

我想将部分句子与另一个字符串匹配。

在下面的示例中,如果它在另一个字符串中找到 Hello,然后是 Mich,然后是 Brooklyn,我希望它打印“True”。这就是它在 Linux 中的工作方式,我没有看到有人在 PS 中这样做。我想创建一个已经包含通配符的字符串以简化编码。

$Keywords = "Hello.*Mich.*Brooklyn"

示例 1

$Sentence = "Hello I am Michael From Brooklyn New York"
if ($Keywords -Match $Sentence) {
    Write-Host("True")
} else {
   Write-Host("False")
}

期望的输出:真

示例 2

# Output should be 'False'
$Sentence = "Hello I am Michael From QUEENS New York"
if ($Keywords -Match $Sentence) {
    Write-Host("True")
} else {
   Write-Host("False")
}

期望的输出:假

标签: powershell

解决方案


运算符的左侧 (LHS) 和右侧 (RHS) 是相反的。的 RHS-match需要是正则表达式字符串。以下将给出所需的结果。

$Sentence -match $Keywords

如果您使用 , 将单个字符串与正则表达式字符串进行比较-matchTrue则将在匹配时返回。False否则返回。当 LHS 是一个数组而不是单个字符串时,则返回集合中成功匹配的项目。


推荐阅读