首页 > 解决方案 > 我需要匹配一个不以特定字符集(文件扩展名)结尾的字符串

问题描述

对于 Exchange Online 规则,我正在尝试在 PowerShell 中创建一个正则表达式,以匹配 ( -match) 任何不以“.pdf”结尾的情况。可悲的是,我对正则表达式还没有那么丰富。我正在使用以下正则表达式测试站点进行测试。

http://regexstorm.net/tester

它似乎与您从 PowerShell 正则表达式获得的输出相匹配。

我已经尝试过以下方法:.?[^\.pdf]$

这是我得到的输出:

以下示例开始失败:

我也尝试了许多类似的事情:'.?(\.[^pP][^dD][^fF])$',但我遇到了类似的结果。

标签: regexpowershell

解决方案


更简单的方法是使用-notmatch运算符而不是-match. 这使您可以简单地编写

$s -notmatch '\.pdf$'

或者,您也可以使用-notlike通配符:

$s -notlike '*.pdf'

推荐阅读