regex - 如何使用 PowerShell 匹配运算符

标签 regex powershell powershell-2.0

版本: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'

最佳答案

它返回 false,因为 filenamepattern 不匹配。

更好的正则表达式是:

$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”
  • $ 如果您现在不在字符串的末尾,则不匹配。

关于regex - 如何使用 PowerShell 匹配运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35630431/

相关文章:

c - 正则表达式匹配字符串

java - 除括号中的空格之外的所有空格拆分字符串

c# - 分割并添加空间

encoding - GitHub 上的 PowerShell 脚本

csv - 重建 CSV 并使用字段值作为导出的文件名

python - 查找字符串是否以相同的单词开头和结尾

powershell - SQLite3 不适用于 Powershell

Powershell:如何设置读/写服务主体名称 AD 权限?

.net - 将 PowerShell 与 .NET 3.5 运行时/库一起使用

Powershell - 使用 Get-ChildItem 在文件中搜索时出现奇怪的输出