【发布时间】:2020-12-06 20:59:24
【问题描述】:
我有一堆不同名称的目录,如下所示:
firstname lastname (123) 456 7890
firstname lastname (234) 567-8910
firstname lastname 345-678-9101
我正在尝试重命名每个目录以保持名称带有空格,但数字之间没有空格,如下所示:
firstname lastname 1234567890
firstname lastname 2345678910
firstname lastname 3456789101
这就是我现在要做的:
$destination = "D:\test"
Get-ChildItem -Path $destination -Recurse -Directory |
Rename-Item -NewName { $_.name -replace '[()\s-]',''} -Verbose
##output##
firstnamelastname1234567890
firstnamelastname2345678910
firstnamelastname3456789101
这种方法有效,但不会在名字姓氏和电话号码之间留下空格。我一直在尝试其他正则表达式模式,但找不到目标数字的解决方案。有没有办法只针对数字之间的空白?
【问题讨论】:
-
你可以使用这样的正则表达式
(?<=\d|\))[- ](?=\d)regex101.com/r/4YR8ft/1 实际上.. 看起来你也想删除括号,所以需要做更多的工作。但关键是您可以使用前瞻/后瞻。 -
上面的正则表达式只会匹配
-和space,而不是括号。如果这对你不起作用,你可以试试这个:(?<=\d)[()\s-]|[()\s-](?=\d)
标签: regex powershell