package com.xx925.inet;
import java.util.regex.Pattern;
public class TestPattern {
public static void main(String[] args) {
String[] str = { "1", "1", "1" ,"1"};
String[] str2 = { "2", "2", "2" ,"0"};
String pattern = getPattern(str, str2);
System.out.println(pattern);
for (int i = 1000; i <= 10000; i++) {
System.out.print(Pattern.matches(pattern, String.valueOf(i)));
if (i == 1110 || i == 2220) {
System.out.println();
}
}
}
public static String getPattern(String[] startNum, String[] endNum) {
StringBuffer buffer = new StringBuffer();
String[] start = getNum(startNum);
String[] end = getNum(endNum);
int flag = Integer.parseInt(startNum[0])-Integer.parseInt(endNum[0]);
// 234-456 [3-3][0-9]{2} 2[4-9][0-9]{1} 23[4-9] 4[0-4][0-9] 45[0-6]
for (int i = 0; i < start.length; i++) {
if (i == start.length - 1) {
buffer.append(start[0]).append("([").append(startNum[i])
.append("-9]").append(")|");
} else if (i == 0&&flag>1) {
buffer.append("([").append(Integer.parseInt(startNum[i]) + 1)
.append("-").append(Integer.parseInt(endNum[i]) - 1)
.append("][0-9]").append("{").append(
(start.length - i - 1)).append("})|");
} else if(i==0&&flag<=1){
//这里不能做任何操作,但是必须存在
}else{
buffer.append(start[start.length - i - 1]).append("([").append(
Integer.parseInt(startNum[i]) + 1).append("-9]").append(
"[0-9]").append("{").append((start.length - i - 1))
.append("})|");
}
}
for (int i = 1; i < end.length; i++) {
if (i == end.length - 1) {
buffer.append(end[0]).append("([0-").append(endNum[i]).append(
"]").append(")|");
} else {
buffer.append(end[endNum.length - i - 1]).append("([0-")
.append(Integer.parseInt(endNum[i]) - 1).append("]")
.append("[0-9]").append("{").append(
(endNum.length - i - 1)).append("})|");
}
}
return buffer.toString().substring(0, buffer.toString().length() - 1);
}
private static String[] getNum(String[] startNum) {
String[] start = new String[startNum.length];
for (int i = 0; i < startNum.length; i++) {
StringBuffer buf = new StringBuffer();
for (int j = 0; j < startNum.length - i - 1; j++) {
buf.append(startNum[j]);
}
start[i] = buf.toString();
}
return start;
}
}