我有一些文件名末尾带有单词字符和数字的文件。由于某种原因我的正则表达式不起作用。以下是我的文件名的示例:
test abc12345.zip
abcd def98765.zip
test xyz23456.zip
Run Code Online (Sandbox Code Playgroud)
这是我的正则表达式:
dir | rename-item -NewName {$_.name -replace "(\w\w\w\d\d\d\d\d.zip)","[$1].zip"}
Run Code Online (Sandbox Code Playgroud)
当我运行选择片段时,它会删除:
abc12345
def98765
xyz23456
Run Code Online (Sandbox Code Playgroud)
从文件名中提取并插入括号:
test [].zip
abcd [].zip
test [].zip
Run Code Online (Sandbox Code Playgroud)
如何将内容保留在括号内?不知道为什么我的代码删除了 [] 之间的所有内容
test [abc12345].zip
abcd [def98765].zip
test [xyz23456].zip
Run Code Online (Sandbox Code Playgroud)
将双引号替换为单引号。Powershell解析双引号的内容并将your替换为(不存在/空)变量$1的内容$1
此外,通过对单词和数字字符使用量词,可以使您的正则表达式变得更简单,所以这
(\w\w\w\d\d\d\d\d.zip)
Run Code Online (Sandbox Code Playgroud)
可以更改为这个较短的版本
(\w{3}\d{5}.zip)
Run Code Online (Sandbox Code Playgroud)
查看您的预期输出,当前捕获组还存在另一个问题,即包含 .zip 扩展名。您真正想要的东西,而不是捕获包括扩展名在内的所有内容
(\w{3}\d{5}.zip)
Run Code Online (Sandbox Code Playgroud)
只捕获单词/数字部分
(\w{3}\d{5}).zip
Run Code Online (Sandbox Code Playgroud)
现在您可以使用捕获组将它们括起来。您的最终正则表达式和替换可能如下所示
dir | rename-item -NewName {$_.name -replace '(\w{3}\d{5}).zip','[$1].zip'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4402 次 |
| 最近记录: |