Java 用于确定文件是否为sql文件的正则表达式
我需要检查文件是否是基于字符串的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
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文件名吗?你已经差不多完成了。你能做到。@菜鸟:你说的“调整这个…”是什么意思?您得到了变量名称
。所以一切都是美好的