正则表达式,以确定文件是否是一个SQL文件

时间:2015-05-11 05:24:27

标签: java regex

我需要检查文件是否是基于字符串的SQL文件,例如:

com/cerner/careconcepts/allergy/data/action/sql/ActivityDataReltnQuery.sql

所以我认为如下正则表达式应该足够了吗?这适用于http://regexpal.com/,但不适用于我的代码:

fileName.matches(".sql$")

以下是我试图在JarFile中查找所有“.sql”文件的代码:

package jarreader;

import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

public class processJar {

public static void main(String[] args){

    //File file = new File(".");
    //for(String fileNames : file.list()) System.out.println(fileNames);

    try {
        JarFile jarFile = new JarFile("allergies-2.1.2.jar");
           Enumeration enumeration = jarFile.entries();
           while (enumeration.hasMoreElements())
               getSqlContent(enumeration.nextElement());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

private static void getSqlContent(Object obj) 
{
  JarEntry entry = (JarEntry)obj;
  String name = entry.getName();

  if(name.matches(".sql$")){
      System.out.println(name);
  }


}
}  

我没有根据上面的正则表达式得到任何输出名称。

1 个答案:

答案 0 :(得分:3)

在你的正则表达式.sql $中,.匹配一个char,之后它会期待sql。所以它不匹配任何名称。 name.matches(".sql$")应该是

name.matches(".*\\.sql$")
相关问题