使用正则表达式获取文件扩展名

时间:2014-07-30 21:10:08

标签: regex powershell-v2.0

嗨我需要一个获取路径扩展的正则表达式,但是如果它没有扩展名它没有显示任何内容或单词“Blank”(< -preferred output)

以下是我对扩展路径有效的方法,但如果路径没有扩展名,我会在导出为CSV时显示完整路径名

我拥有的:     Extension = $ matches.fullname -replace'。。(。)','$ 1'

实施例

\服务器\ ShareFile \ RootFolder1.2.3 \ Folder1.2.3 \ Subfolder2 \ Excel.csv

在这种情况下,它只会得到.csv

\服务器\ ShareFile \ RootFolder1.2.3 \ Folder1.2.3 \ Subfolder2 \ RandomFileNoExtension

在这种情况下,它将不会显示任何内容或可能显示“空白”

2 个答案:

答案 0 :(得分:2)

使用此正则表达式:

\.[^.]+$

样本使用

if ($filename -cmatch '\.[^.]+$') {
    $extension = $matches[0]
}

<强>解释

  • \.匹配点
  • [^.]+匹配不是点的字符
  • $锚点断言我们位于字符串的末尾

答案 1 :(得分:0)

您可以在不使用正则表达式的情况下解决此问题。使用[System.IO.Path]::GetExtension($fileName)

[System.IO.Path]::GetExtension("README.md")
  returns .md

[System.IO.Path]::GetExtension("README")
  returns nothing

You can find more info on MSDN