Java 用于确定文件是否为sql文件的正则表达式

Java 用于确定文件是否为sql文件的正则表达式,java,regex,Java,Regex,我需要检查文件是否是基于字符串的SQL文件,例如: com/cerner/careconcepts/allergy/data/action/sql/ActivityDataReltnQuery.sql 所以我想下面的正则表达式就足够了?这适用于但不适用于我的代码: fileName.matches(".sql$") 下面是我试图在JAR文件中查找所有“.sql”文件的代码: package jarreader; import java.io.File; import java.io.IOE

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

com/cerner/careconcepts/allergy/data/action/sql/ActivityDataReltnQuery.sql
所以我想下面的正则表达式就足够了?这适用于但不适用于我的代码:

fileName.matches(".sql$")
下面是我试图在JAR文件中查找所有“.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);
  }


}
}  

我没有得到任何基于上述正则表达式的输出名称。

在regex.sql$中,
匹配一个字符,之后它需要
sql
。因此它与任何名称都不匹配。
name.matches(“.sql$”)
应为

name.matches(".*\\.sql$")

在regex.sql$中,
匹配一个字符,然后它需要
sql
。因此它与任何名称都不匹配。
name.matches(“.sql$”)
应为

name.matches(".*\\.sql$")

在regex.sql$中,
匹配一个字符,然后它需要
sql
。因此它与任何名称都不匹配。
name.matches(“.sql$”)
应为

name.matches(".*\\.sql$")

在regex.sql$中,
匹配一个字符,然后它需要
sql
。因此它与任何名称都不匹配。
name.matches(“.sql$”)
应为

name.matches(".*\\.sql$")


你试过调试你的代码吗?文件名是否符合您的要求?另请参阅,您也可以使用
name.toLowerCase().endsWith(“.sql”)以避免使用正则表达式。有时我更喜欢这样的方式,因为它更容易理解,如果注册。会变得更复杂。你试过调试你的代码吗?文件名是否符合您的要求?另请参阅,您也可以使用
name.toLowerCase().endsWith(“.sql”)以避免使用正则表达式。有时我更喜欢这样的方式,因为它更容易理解,如果注册。会变得更复杂。你试过调试你的代码吗?文件名是否符合您的要求?另请参阅,您也可以使用
name.toLowerCase().endsWith(“.sql”)以避免使用正则表达式。有时我更喜欢这样的方式,因为它更容易理解,如果注册。会变得更复杂。你试过调试你的代码吗?文件名是否符合您的要求?另请参阅,您也可以使用
name.toLowerCase().endsWith(“.sql”)以避免使用正则表达式。有时我更喜欢这样的方式,因为它更容易理解,如果注册。我同意拉胡尔的观点表示任何字符,也不止一次。\\。意思是“点”本身。必须用斜线(\)来转义点。在java字符串中,您必须用双1(\\)转义斜杠是的,正确理解。非常感谢Rahul!这就解释了。你知道我该如何调整它来获得SQL文件名吗?你已经差不多完成了。你能做到。@菜鸟:你说的“调整这个…”是什么意思?您得到了变量
名称
。所以一切都是美好的,我同意拉胡尔的观点表示任何字符,也不止一次。\\。意思是“点”本身。必须用斜线(\)来转义点。在java字符串中,您必须用双1(\\)转义斜杠是的,正确理解。非常感谢Rahul!这就解释了。你知道我该如何调整它来获得SQL文件名吗?你已经差不多完成了。你能做到。@菜鸟:你说的“调整这个…”是什么意思?您得到了变量
名称
。所以一切都是美好的,我同意拉胡尔的观点表示任何字符,也不止一次。\\。意思是“点”本身。必须用斜线(\)来转义点。在java字符串中,您必须用双1(\\)转义斜杠是的,正确理解。非常感谢Rahul!这就解释了。你知道我该如何调整它来获得SQL文件名吗?你已经差不多完成了。你能做到。@菜鸟:你说的“调整这个…”是什么意思?您得到了变量
名称
。所以一切都是美好的,我同意拉胡尔的观点表示任何字符,也不止一次。\\。意思是“点”本身。必须用斜线(\)来转义点。在java字符串中,您必须用双1(\\)转义斜杠是的,正确理解。非常感谢Rahul!这就解释了。你知道我该如何调整它来获得SQL文件名吗?你已经差不多完成了。你能做到。@菜鸟:你说的“调整这个…”是什么意思?您得到了变量
名称
。所以一切都是美好的