排除以.html结尾的所有结果

时间:2015-06-23 09:05:54

标签: regex powershell

我正在尝试过滤掉.html中未结尾的所有文件。除此之外,它们都以不同的日期开始,因此只有那些与日期模式匹配的日期。

文件名示例:

2015-06-23 1003 (Tuesday) - Inconsistencies found.html
2015-06-23 1003 (Tuesday) - Groups without place holder account.txt
2015-06-23 1003 (Tuesday) - Inactive users.csv
2015-06-23 0948 (Tuesday) - Inconsistencies found.html
2015-06-23 0948 (Tuesday) - Description not following the standard.csv
2015-06-23 0948 (Tuesday) - Groups without place holder account.txt

预期结果:

# when $d = 2015-06-23 1003
2015-06-23 1003 (Tuesday) - Groups without place holder account.txt
2015-06-23 1003 (Tuesday) - Inactive users.csv

当前正则表达式:

$RegExAttachments = "^{0:00}-{1:00}-{2:00}\s{3:00}{4:00}\s\({5}\).*\." -f $d.Year,$d.Month,$d.Day,$d.Hour,$d.Minute,$d.DayOfWeek
$Attachments = Get-ChildItem $LogFolder | where {$_.Name -match $RegExAttachments} | foreach {$_.FullName}
$Attachments

当前正则表达式会显示正确的结果,但是,它还包含以HTML格式结尾的文件,我希望在结果中避免这种情况。我也试过了"^{0:00}-{1:00}-{2:00}\s{3:00}{4:00}\s\({5}\).*\.[^html]"但是它也没有调出txt files

2 个答案:

答案 0 :(得分:2)

请勿使用正则表达式。 Powershell具有足够的内置功能,可以过滤像文件扩展名一样简单的东西。

使用:

$Attachments = Get-ChildItem $LogFolder | where {($_.extension -ne '.html') -and ($_.Name -match $RegExAttachments)}

正则表达式中[]内的字符不是文字字符串 - [^html]表示不匹配htm或{{1无论顺序如何。因此它与l不匹配,因为该字符类包含txt

答案 1 :(得分:0)

你也可以使用下面的

Exchange ActiveSync