[英]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]
匹配单个字符, p
, s
, 1
, b
, a
或t
。 要创建匹配ps1
或bat
的组,您需要一个分组结构, (ps1|bat)
或(?:ps1|bat)
(非捕获组)。
要尽可能多地匹配除换行符以外的任何字符,您可以使用.*
。 要将其限制为除点以外的任何字符,请使用否定字符类[^.]
。 请注意, [^.]*
将匹配 0 个或多个字符而不是点,而[^.]+
将匹配 1 个或更多。
因此,您可以使用此正则表达式来允许\\\\mudit.bah.
之间的任何字符\\\\mudit.bah.
和ps1
或bat
:
^\\{2}mudit\.bah\..*\.(?:ps1|bat)$
或者,限制在它们之间只有一个无点部分:
^\\{2}mudit\.bah\.[^.]*\.(?:ps1|bat)$
请参阅正则表达式演示。
细节
^
- 字符串的开始\\\\{2}
- 两个反斜杠mudit\\.bah\\.
- 一个mudit.bah.
子串[^.]+\\.
- 除.
以外的任何 1+ 个字符.
然后是一个点(?:ps1|bat)
- ps1
或bat
$
- 字符串的结尾。对于您要求的正则表达式匹配,请使用:
^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.