首页 > 解决方案 > 将数组匹配到多个正则表达式(来自数组)

问题描述

我有一个字符串数组,让我们说

$data = @(
"Haus",
"Maus",
"Laus",
"Schnitzel",
"Elefant"
)

我想根据数组中的多个正则表达式对其进行检查。

$regexChecks = @(
".*aus.*",
".*fant.*"
)

我尝试过这样的事情

$test = $data |? {$regexChecks -notmatch $_}

Write-Host $test

我希望只有字符串“Schnitzel”作为输出。

标签: powershell

解决方案


您可以将正则表达式作为字符串。这只会返回Schnitzel

$data = @(
"Haus",
"Maus",
"Laus",
"Schnitzel",
"Elefant"
)

$Regex = '.*Schnitzel.*'

$test = $data | ? { $_ -match $Regex }

Write-Host $test

如果您想检查多个正则表达式,请使用|分隔它们

这将输出SchnitzelMaus

$Regex = '.*Schnitzel.*|.*Maus.*'

这将返回Schnitzel,MausLausHaus

$Regex = '.*Schnitzel.*|.*aus.*'

编辑

您还可以有一个正则表达式数组,并将它们加入|

$RegexArray = @(
    '.*Schnitzel.*',
    '.*Maus.*'
)

$Regex = $RegexArray -join '|'

$test = $data | ? { $_ -match $Regex }

推荐阅读