如何使用正则表达式从filepath获取没有扩展名的文件名

时间:2015-01-30 11:06:14

标签: regex powershell

我如何得到" ChangeDefaultSharePermissions"从下面出来?

C:\Temp\build_RegEx_tests\ChangeDefaultSharePermissions.vbs

所以,它是从最后\.vbs

2 个答案:

答案 0 :(得分:1)

在这种情况下,这样的东西也会起作用。您当前的答案不是正则表达式解决方案。

PS C:\Users\mcameron> "C:\Temp\build_RegEx_tests\ChangeDefaultSharePermissions.vbs" -replace '.*\\(.+?)\..*', '$1'
ChangeDefaultSharePermissions

一些细分

  1. .*\\将所有内容匹配到最后\
  2. (.+?)捕获组,在最后一次斜线之后取出所有内容,直到......
  3. \..*与文字句号相匹配,而其余部分则应为扩展名。
  4. 使用'$1'
  5. 将该文本替换为捕获组的结果

    <强>旁注

    该文件的basename属性具有相同的结果。

     PS C:\Users\mcameron> (Get-Item "C:\Temp\build_RegEx_tests\ChangeDefaultSharePermissions.vbs").basename
     ChangeDefaultSharePermissions
    

答案 1 :(得分:0)

最后得到了答案...感谢“Frode F”的链接......这有帮助..

$text = "C:\Temp\build_RegEx_tests\ChangeDefaultSharePermissions.vbs"

$reg = ($text).split('\')

$newreg = $reg[3].Split('.')

$newreg[0]