regex - 我需要匹配一个不以特定字符集(文件扩展名)结尾的字符串
问题描述
对于 Exchange Online 规则,我正在尝试在 PowerShell 中创建一个正则表达式,以匹配 ( -match
) 任何不以“.pdf”结尾的情况。可悲的是,我对正则表达式还没有那么丰富。我正在使用以下正则表达式测试站点进行测试。
它似乎与您从 PowerShell 正则表达式获得的输出相匹配。
我已经尝试过以下方法:.?[^\.pdf]$
。
这是我得到的输出:
"test.txt" -match '.?[^\.pdf]$'
→ 是的(这就是我想要的)"test.docx -match '.?[^\.pdf]$'
→ 是的(这就是我想要的)"test.pdf.txt -match '.?[^\.pdf]$'
→ 是的(这就是我想要的)"test.pdf" -match '.?[^\.pdf]$'
→ 假(这就是我想要的)
以下示例开始失败:
"test.pdd" -match '.?[^\.pdf]$'
→ 错误(这不是我想要的)"test.pdx" -match '.?[^\.pdf]$'
→ 错误(这不是我想要的)
我也尝试了许多类似的事情:'.?(\.[^pP][^dD][^fF])$'
,但我遇到了类似的结果。
解决方案
更简单的方法是使用-notmatch
运算符而不是-match
. 这使您可以简单地编写
$s -notmatch '\.pdf$'
或者,您也可以使用-notlike
通配符:
$s -notlike '*.pdf'
推荐阅读
- c# - 关于简单认证和授权系统的问题
- ios - Flutter:如何使用flutter_messaging插件在ios上显示丰富的通知?
- java - Java:无法在 timestamp.HBASE api 处执行列族删除
- monaco-editor - 将 OCaml 中定义的自定义语言添加到 Monaco Editor
- bluetooth - 蓝牙已连接但启动时无法使用
- google-apps-script - 从电子表格自定义列中检索值并放入模板文档
- c - 为什么编译器将赋值解释为定义
- html - 悬停的图像文本覆盖颜色问题
- c# - 我想将 JSON 从数组序列化为对象
- c++ - 使用 libarchive 从内存中读取 zip 归档文件头