【发布时间】:2018-12-12 22:37:47
【问题描述】:
我似乎无法在这里找到我正在尝试做的事情的示例。
我有一个正则表达式列表,我正在搜索 csv 文件的每一行,如果所有内容都是大写的,它们就可以很好地工作。但是,我的搜索是区分大小写的,我不知道如何使它不区分大小写,而不用 ?i 之类的东西修改每个正则表达式。是否可以通过简单的方式修改我在这里所做的事情?
奖励积分!我正在使用数千个正则表达式进行搜索,这似乎需要很长时间。如果您碰巧知道一种更快的方法来搜索所有正则表达式的每一行,请分享。
$file = New-Object System.IO.StreamReader ($CSVFile) # Input Stream
while (($text = $file.ReadLine()) -ne $null ){
foreach ($RX in $SearchList){
foreach ($match in ([regex]$RX).Matches($text)) {
write-host "Match found: " $match.value -ForegroundColor Red
}
}
}
$file.close();
感谢您对此的任何帮助!
【问题讨论】:
-
正如 jrider 指出的,如果你使用
[regex]类型,那么你默认区分大小写。您将需要使用所需的选项来更改它。 ///// 如果使用内置的-match,默认情况下不区分大小写。 ///// 如果您有数千个正则表达式模式,为什么要一次一个地尝试它们?使用|获得 OR,您可以将整个列表作为一个测试提供。 -
请注意,您可以在正则表达式中将正则表达式选项内联指定为
(?i)以不区分大小写。
标签: regex powershell