当前位置: 首页 > 编程笔记 >

在PowerShell中,–Match,-Like和–Contains运算符有什么区别?

何浩荡
2023-03-14
本文向大家介绍在PowerShell中,–Match,-Like和–Contains运算符有什么区别?,包括了在PowerShell中,–Match,-Like和–Contains运算符有什么区别?的使用技巧和注意事项,需要的朋友参考一下

上面提到的所有上述3个运算符(Match, Like, Contains)都是PowerShell中的比较运算符。MatchLike运算符几乎相似,唯一的区别是通配符和Contains运算符完全不同。我们将看到示例并了解它们如何工作。

示例

PS C:\WINDOWS\system32> "This is a PowerShell String" -Match "PowerShell"
True
PS C:\WINDOWS\system32> "This is a PowerShell String" -Like "PowerShell"
False
PS C:\WINDOWS\system32> "This is a PowerShell String" -Contains "PowerShell"
False

如果您看到上面示例的输出,则仅对于Match语句,结果为True,原因是当您匹配字符串中的关键字时,它将检查关键字是否存在。不管您使用的关键字是单个关键字还是关联词。以下语句也是正确的。

PS C:\WINDOWS\system32> "This is a PowerShell String" -Match "Shell"
True

但是通配符(*)对Match运算符没有帮助。

PS C:\WINDOWS\system32> "This is a PowerShell String" -Match "*PowerShell*"
parsing "*PowerShell*" - Quantifier {x,y} following nothing.
At line:1 char:1
+ "This is a PowerShell String" -Match "*PowerShell*"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException

因此,Match条件不会评估正则表达式运算符。相反,Like运算符与通配符(*)一起使用。

PS C:\WINDOWS\system32> "This is a PowerShell String" -like "*PowerShell*"
True

因此,通配符在Match和Like运算符之间起主要作用。我们可以使用Contains运算符检查通配符(*)的使用。

PS C:\WINDOWS\system32> "This is a PowerShell String" -contains "*PowerShell*"
False

Contains运算符也不能与通配符(*)一起使用。它是与MatchLike完全不同的运算符,并且可以处理对象集合(Array)

PS C:\WINDOWS\system32> "Apple","Dog","Carrot","Cat" -contains "dog"
True
 类似资料:
  • 考虑以下代码段: 您可能认为它的计算结果为true,但事实并非如此。它的计算结果将改为false。我不知道为什么会这样,但确实如此。 为了避免这种情况,您可以使用以下内容: 现在表达式的计算结果将为true。 为什么第一个代码段的行为是这样的?是否有什么特殊的东西不能很好地处理包含的内容?文档中没有提到这方面的任何内容。

  • 问题内容: Java中的和运算符有什么区别? 问题答案: 是算术右移,是逻辑右移。 在算术移位中,将扩展符号位以保留数字的符号性。 例如:用8位表示的将是(因为最高有效位的权重为负)。使用算术移位将其右移一位,你将得到1。但是,逻辑右移并不关心该值是否可能表示带符号的数字;它只是将所有内容移至右侧,并从左侧填充0。使用逻辑移位将右移一位将得到。

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 我应该在TSQL中使用!=或<>表示不相等吗? 如果我使用一个简单的表,例如: 两者都给我: 那么和mysql运算符有什么区别? 问题答案: 它们完全相同。请参阅文档。 http://dev.mysql.com/doc/refman/5.0/en/comparison- operators.html#operator_not-

  • 问题内容: 和之间有什么区别?它们都创建一个类的实例,我不确定它们之间有什么区别。 问题答案: 在操作创建一个是静态已知的(在编译时),并可以调用你想创建对象的任何构造一个类型的新对象。这是创建对象的首选方式- 快速且JVM对它进行了许多积极的优化。 是一个动态构造,用于查找具有特定名称的类。它比使用速度慢,因为无法将对象的类型硬编码到字节码中,并且因为JVM可能必须执行权限检查以确保您有权创建对

  • 问题内容: JavaScript代码: Java代码: 为什么?我已经阅读了文档,但没有发现不同。如何将JavaScript代码移植到Java? 问题答案: 两者都是合乎逻辑的右移,但JavaScript在处理数字方面有些怪异。通常,JavaScript中的数字为浮点数,但按位运算会将其转换为无符号的32位整数。因此,即使该值看起来不应更改,它也会将数字转换为32位无符号整数。 您看到的值与相同,

  • 那么,在这些语言中同时使用逻辑运算符和按位运算符有什么具体的理由吗?或者他们只是出于熟悉的原因被包括在内? (我知道您可以在布尔上下文中使用“按位”运算符来避免Java和C#中的短路,但我从来不需要这样的行为,所以我想这可能是一个大部分未使用的特例)