日期:2014-05-20  浏览次数:20792 次

java 正则表达式
我写了一个正则表达式,判断字符串里面是否包含了"_4个数字.csv"的字符串,但发现若字符中含有"_5个数字.csv"时,程序运行很慢,请大家帮我看一下,我没有多少正则表达式的经验,写的很差,如果可以优化的话,请大佬们帮我优化一下。


import java.util.regex.Pattern;

public class Test {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "20131210_19045.csv,a.csv,";
System.out.println(""+Pattern.matches("(\\w*?\\W*?)*?(\\w?_\\d{4}.csv,)+(\\w*?\\W*?)*?", str));
}

}

------解决方案--------------------
试试这个
			String str = "20131210_19015.csv,a.csv,";
System.out.println(""+Pattern.matches(".*(?<=_)(\\d{4})(?=.csv).*", str));

------解决方案--------------------
.*?_\\d{4}\\.csv.*
------解决方案--------------------

String str = "20131210_19045.csv,a.csv,";       
System.out.println(str.matches(".*_\\d{4}\\.csv.*"));

------解决方案--------------------
	@Test
public void test()
{
String str = "20131210_19015.csv,a.csv,";    
System.out.println(""+Pattern.matches(".*_\\d{4,}+\\.csv.*", str));
}


虽然成功了,但是感觉还是慢。。。