正则表达式、PowerShell,如何让它显示在 PowerShell 中?
将以下 PowerShell 脚本与 Regex 结合使用。
问题: 我没有收到文件名返回的任何数据。
POWERSHELL 中的当前结果:
POWERSHELL 中的预期结果:
这个正则表达式演示正在做我认为应该在正则表达式中做的事情。 (源自这个 问题。)
POWERSHELL SCRIPT:
$InStuff = @('111111_SMITH, JIM_END TLD 6-01-20 THR LEWISHS.pdf','222222_JONES, MIKE_G URS TO 7.25 2-28-19 SA COOPSHS.pdf')
switch -Regex ($instuff) {
'^(^.{0,6})*|(?!.*_).*(?=\.)'{
[pscustomobject]@{
EmployeeID = $matches.1
FileName = $matches.2
}
}
}
问题: 我需要更改什么才能使文件名显示在 PowerShell 结果中?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看起来像一个简单的
。 Split()
可以实现你想要的。该方法会将字符串分割为3个标记,然后将其分配给EmployeeID的$a
,$null
对于用户(我们在这里使用$null
来简单地忽略这个标记,因为您已经声明它不感兴趣)和$b
代表文件名。在 PowerShell 中,这称为 多重赋值。要根据评论中的要求从
$b
令牌中删除扩展名,正则表达式也不需要,您可以使用 Path.GetFileNameWithoutExtension来自System.IO
的方法。结果是:
Seems like a simple
.Split()
can achieve what you're looking for. The method will split the string into 3 tokens which then get assigned to$a
for the EmployeeID,$null
for the User (we use$null
here to simply ignore this token since you have already stated it was not of interest) and$b
for the FileName. In PowerShell, this is known as multiple assignment.To remove the extension from the
$b
token, as requested in your comment, regex is also not needed, you can use Path.GetFileNameWithoutExtension Method fromSystem.IO
.Which results in: