PowerShell 3正则表达式 - 为什么不区分大小写不起作用?

时间:2018-05-09 20:18:28

标签: regex powershell

我试图弄清楚为什么下面的代码在案例不同时不会匹配。第3 /第4行的原因是将我的日志过滤器组合成一个表达式,同时仍然允许使用逗号。

我尝试了很多不同的方式,但案例仍然很重要。

$combined_log = {"A", "B", "Error"}
$Log_Filters = "ERROR", "failed", "Note", "Warning"
#[regex]$Log_Filter_regex =  '(?i)^(' + (($Log_Filters|foreach{[regex]::escape($_) -replace ",","\,"}) –join "|") + ')$'
[regex]$Log_Filter_regex =  (($Log_Filters|foreach {[regex]::escape($_) -replace ",","\,"}) –join "|") 
$combined_log | where {$_ -imatch $Log_Filter_regex} 

1 个答案:

答案 0 :(得分:2)

-match / -imatch运算符需要遵循字符串模式,因此请从代码行中删除[regex]

$Log_Filter_regex =  (($Log_Filters|foreach {[regex]::escape($_) -replace ",","\,"}) –join "|")

该模式看起来像ERROR|failed|Note|Warning,您将获得匹配。

enter image description here