繁体   English   中英

用于文件路径的 Powershell 正则表达式

[英]Powershell regex for a file path

我想找出\\\\mudit.bah.*[ps1|bat]正则表达式,这意味着路径可以像\\\\mudit.bah.xyz123.ps1\\\\mudit.bah.xyz123.bat xyz123可以是任何东西。 我正在使用https://rextester.com/tester并尝试它,但是我能够做到\\\\{2}mudit.bah. . 我不知道如何使用什么*它可以是多个字符用.(dots)或没有.(dots) 对此的任何帮助都非常感谢。

首先, [ps1|bat]匹配单个字符, ps1bat 要创建匹配ps1bat的组,您需要一个分组结构, (ps1|bat)(?:ps1|bat) (非捕获组)。

要尽可能多地匹配除换行符以外的任何字符,您可以使用.* 要将其限制为除点以外的任何字符,请使用否定字符类[^.] 请注意, [^.]*将匹配 0 个或多个字符而不是点,而[^.]+将匹配 1 个或更多。

因此,您可以使用此正则表达式来允许\\\\mudit.bah.之间的任何字符\\\\mudit.bah. ps1bat

^\\{2}mudit\.bah\..*\.(?:ps1|bat)$

或者,限制在它们之间只有一个无点部分:

^\\{2}mudit\.bah\.[^.]*\.(?:ps1|bat)$

请参阅正则表达式演示

细节

  • ^ - 字符串的开始
  • \\\\{2} - 两个反斜杠
  • mudit\\.bah\\. - 一个mudit.bah. 子串
  • [^.]+\\. - 除.以外的任何 1+ 个字符. 然后是一个点
  • (?:ps1|bat) - ps1bat
  • $ - 字符串的结尾。

对于您要求的正则表达式匹配,请使用:

^mudit.bah.*.(ps1|bat)

get-childitem | Where-Object {$_.Name -match "^mudit\.bah.*.(ps1|bat)"}

这将获得以mudit.bah 开头的文件。 并以 ps1 或 bat 结尾。 'bah' 之后的 .* 将匹配任何字符,包括数字和符号。

要在没有正则表达式的情况下执行此操作:

Get-ChildItem | Where-Object {($_.Name -like ("mudit.bah." + "*" + ".ps1")) -or ($_.Name -like ("mudit.bah." + "*" + ".bat"))} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM