如何使用PowerShell匹配运算符

SQL锤子

版本:PowerShell 2.0

我有以下内容:

$pattern = '^.\d_\d\d\d\d\d\d\d\d_\d\d\d\d\d\d\d\d\d\d\d\d\d\d.pdf$'
$filename = '123456_12345678_12345678901234.pdf'
$filename -match $pattern

我希望^和$字符开始和结束字符串。由于我使用的是通配符'。一开始,我真的只是在乎$终止符。这些字符似乎无法在PowerShell中正常工作,因为上述代码返回FALSE。

对于$ goodname,哪种模式将返回true,对于$ badname,哪种模式将返回false。名称第一部分的位数是未知的。

$goodname = '123456_12345678_12345678901234.pdf'
$badname = '123456_12345678_12345678901234.pdf.hold'
RB。

由于filename不匹配,因此返回false pattern

更好的正则表达式是:

$pattern = '^\d+_\d{8}_\d{14}\.pdf$'
$filename = '123456_12345678_12345678901234.pdf'
$filename -match '\d{6}_\d{8}_\d{14}\.pdf.*'

解释

  • ^ 在字符串的开头
  • \d+ 至少匹配一位数字(正如您所说的,这里的位数是未知的)
  • _ 搭配下划线
  • \d{8} 匹配8位数字
  • _ 搭配下划线
  • \d{14} 匹配14位数字
  • \. 匹配一个点 .
  • pdf 匹配“ pdf”
  • $ 如果您现在不在字符串末尾,则不匹配。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章