首页 > 解决方案 > 根据驱动器号匹配扩展文件的正则表达式

问题描述

我有这个可以检测特定扩展文件的正则表达式,

([a-zA-Z0-9\s_\\.\-\(\):])+(.cmd|.exe|.bat)$

但我想更改它,使其永远不会应用于 c:\ ,目标是仅在辅助或外部驱动器上检测这些扩展文件

例子

D:\test.bat match
c:\test.bat does not match

谢谢

标签: regex

解决方案


假设根据您在模式中包含的每条路径都位于单独的行中,您可以在此基础上构建一个非常简单的解决方案:$

^[^cC].*(cmd|exe|bat)$

解释:

  • ^匹配一行的开头。
  • [^cC]匹配 cor之外的所有内容C
  • .*匹配除行终止符之外的任何字符,零次或多次。
  • (cmd|exe|bat)匹配您的扩展名。由于点在前一行中已匹配,因此无需再次匹配。
  • $匹配行尾。

TL;DR:你忘了匹配你的行的开头。


推荐阅读