如何过滤第一个下划线和后面的句点
这是我目前所拥有的,但我收到的文件正在更改,在某些情况下,原始文件名有一个额外的下划线。我需要一种解释的方法。
Get-ChildItem "\MyFileServer*" | Rename-Item -NewName { ($_.Name -replace '(?<=^.{3}).{5}', '.').Replace(".vfmpclmadj.", ".sa.") }
原始文件名
999_987895_888888_544P.44444.vfmpclmadj.000025001.20201216.175314
新文件名
999.44444.sa.000025001.20201216.175314
这样的东西应该可以工作。
('999_987895_888888_544P.44444.vfmpclmadj.000025001.20201216.175314' -replace '_.+?(?=.)').Replace(".vfmpclmadj.", ".sa.")
它只是寻找一个下划线加上任何字符,最多一个句点。你可以让它更严格,但对于这个例子,它是不需要的。类似这样的东西也可以,但只适用于第一个下划线。前者可能会影响字符串后面的其他下划线。
('999_987895_888888_544P.44444.vfmpclmadj.000025001.20201216.175314' -replace '(?<=^[^_]+)_.+?(?=.)').Replace(".vfmpclmadj.", ".sa.")