我有这个正则表达式"((\\-)?[0-9]+(.([0-9])+)?)+"
应该匹配每个由一个空格分隔的数字序列。例如“5 4 1 2 2.4 3 7.8”或“5 4 1 2 2.4 8.001 7.8”。如何快速匹配长字符串和正则表达式?
为了检查字符串我做的正则表达式匹配:
if((value+" ").matches("((\\-)?[0-9]+(.([0-9])+)?)+")){
// anything
}
的事情是,当我给这个小串像上面的例子中,它会很好。但是对于较长的字符串,如:“2000000 2000000 2000000 2000000 2000000 2000000 2000000 2000000”如果匹配,它会很好,但如果不匹配则最多需要5秒。选中此项:
String value = "2000000 2000000 2000000 2000000 2000000 2000000 2000000 2000000 h";
System.out.println("Start: "+System.currentTimeMillis());
if((value+" ").matches("((\\-)?[0-9]+(.([0-9])+)?)+")){
System.out.println("OK");
}else{
System.out.println("NOK");
}
System.out.println("End: "+System.currentTimeMillis());
这需要5秒钟!而如果从字符串末尾删除“h”,则需要少于1 ms。
任何想法?
另外我想你可能想逃避点'.'。 – jlordo