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

时间:2015-04-03 16:33:46

标签: java regex string

我正在尝试从包含文件名或目录的字符串中提取子字符串。提取的子字符串应该是文件扩展名。我在网上做了一些搜索,发现我可以使用正则表达式来实现这一点。我发现^\.[\w]+$是一种可以查找文件扩展名的模式。问题是我对正则表达式及其功能并不完全熟悉。

基本上如果我有一个像C:\Desktop\myFile.txt这样的字符串,我希望正则表达式找到并创建一个只包含.txt的新字符串

3 个答案:

答案 0 :(得分:13)

捕获文件扩展名的正则表达式是:

(\\.[^.]+)$

请注意,点需要转义以匹配文字点。但是[^.]是一个带有否定的字符类,因为dot[]内被\\. # match a literal dot [^.]+ # match 1 or more of any character but dot (\\.[^.]+) # capture above test in group #1 $ # anchor to match end of input 处理,所以不需要任何转义。

{{1}}

答案 1 :(得分:4)

您可以使用String class split()函数。在这里你可以传递正则表达式。在这种情况下,它将是“\。”。这将把字符串拆分为两部分,第二部分将为您提供文件扩展名。

public class Sample{
  public static void main(String arg[]){
    String filename= "c:\\abc.txt";

    String fileArray[]=filename.split("\\.");

    System.out.println(fileArray[fileArray.length-1]); //Will print the file extension
  }
}

答案 2 :(得分:2)

如果您不想使用RegEx,可以使用以下内容:

String fileString = "..." //this is your String representing the File
int lastDot = fileString.lastIndexOf('.');
String extension = fileString.subString(lastDot+1);