比较2个数组之间的字符串

时间:2015-03-26 12:37:15

标签: powershell

我有2个数组,如下所示。我只需要$ b中那些名字不在$ a中的元素。可以看出,$ a和$ b上的元素名称不相同。$ b有全名而$ a只有一部分名称。

$a="rohit","shikar","virat","ravindra"
$b="rohit : sharma","shikar : dhawan","virat : kohli","ajinx : rahane","ravi : ashwin"

我试图遍历$ b并使用像-contain,-match这样的运算符,但这些运算符不起作用。

1 个答案:

答案 0 :(得分:0)

使用正则表达式:

$a="rohit","shikar","virat","ravindra"
$b="rohit : sharma","shikar : dhawan","virat : kohli","ajinx : rahane","ravi : ashwin"

$a_regex = ‘(?i)(‘ + (($a |foreach {[regex]::escape($_)}) –join “|”) + ‘)’

$b -notmatch $a_regex

ajinx : rahane
ravi : ashwin

如果你知道$ a中不存在可能需要转义的正则表达式元字符,那么它可以很简单:

$a="rohit","shikar","virat","ravindra"
$b="rohit : sharma","shikar : dhawan","virat : kohli","ajinx : rahane","ravi : ashwin"

$a_regex = $a -join '|'

$b -notmatch $a_regex

ajinx : rahane
ravi : ashwin