【问题标题】:How to use regex to get file extension?如何使用正则表达式获取文件扩展名?
【发布时间】:2015-06-08 18:34:17
【问题描述】:

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

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

【问题讨论】:

  • 给你:regular-expressions.info(一个很好的资源,有许多独立于语言和特定语言的帮助。)
  • OP 只想提取扩展名,这不是欺骗问题中所问的内容。

标签: java regex string


【解决方案1】:

您可以使用 String 类 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】:

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

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

    【讨论】:

      【解决方案3】:

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

      (\\.[^.]+)$
      

      请注意,点需要转义以匹配文字点。然而[^.] 是一个不需要任何转义的否定字符类,因为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
      

      【讨论】:

        猜你喜欢
        • 2013-03-18
        • 2023-03-08
        • 1970-01-01
        • 2019-02-19
        • 2022-11-19
        • 1970-01-01
        • 2010-09-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多