public class RegularExpression {
//字符串处理利器,字符串查找,匹配,替换,应该叫字符匹配
//parten//要符合的那种模式
//用这种模式匹配一个字符串后产生的结果
public static void main(String[] args) {
//一个点代表任何一个字符
/*p("abc".matches("..."));
//"d"代表的是一位数字,两个反斜杠,一个代表转义字符
p("ab6878799999bf".replaceAll("\d", "-"));
//把一个正则表达式编译一下,编译以后放到模式里面,pattern代表字符串要被匹配的一个模式
//我匹配一个具有三个字符的字符串,这三个字符是a-z中的某个字母 []代表范围
Pattern p = Pattern.compile("[a-z]{3}");
//match表示我去匹配某一个字符串,匹配的结果放大matcher中
Matcher m = p.matcher("abc");
p(m.matches());*/
//初步认识. * + ?
//a出现的次数是否为0个或多个
/*p("aaa".matches("a*"));
//a出现的次数为1个或多个
p("aaa".matches("a+"));
//a出现的次数为1个或0个
p("aaa".matches("a?"));
p("".matches("a*"));
p("".matches("a?"));*/
//X{n} exactlly n times //X{n,} at least n times //X{n,m} at least n times,but not more than m times
/*p("2223434343436667".matches("\d{3,100}"));
//.是转意字符要用\.代替
p("192.168.0.aaa".matches("\d{1,3}\.\d{1,3}\.\d{1,3}\..{1,3}"));
p("192".matches("[0-2][0-9][0-9]"));*/
//中括号代表取这里面中的一个字符就可以了
/* p("a".matches("[abc]"));
//小尖括号表示除了abc之外的其他字符都可以
p("j".matches("[^abc]"));
p("A".matches("[a-zA-Z]"));
p("A".matches("[a-zA-Z]"));
//和上面的一样
p("A".matches("[a-z]|[A-Z]"));
p("A".matches("[a-z[A-Z]]"));
p("R".matches("[A-Z&&[RFG]]"));*/
// //"s"代表空白字符( (tab) x0b(backspace)f (enter)),S代表取反 D也一样
//w 代表单词的字符,数字字母下划线[a-zA-Z_0-9]
/* p(" ".matches("\s{4}"));
p(" ".matches("\S"));
p("a_8".matches("\w{3}"));
p("abd888&^%".matches("[a-z]{1,3}\d+[&#^%]+"));
p("\".matches("\\"));
//boundry
p("hrifsff".matches("^h.*"));
p("hellfo ir".matches(".*r$"));
// word boundry
p("hello ir".matches("^h[a-z]{1,3}o\b.*"));
p(" ".matches("^[\s&&[^\n]]*\n$"));
//pratise
p("aaa 8888c".matches(".*\d{4}."));
p("aaa 8888c".matches(".*\b\d{4}."));*/
String s = "12345-123-43-3456";
Pattern p = Pattern.compile("\d{3,5}");
Matcher m = p.matcher(s);
//匹配整个字符串 //
p(m.matches()); //
m.reset();
//find sub string /*
p(m.find());
p(m.start()+" "+m.end());
p(m.find());
p(m.find());
p(m.find());*/
//looking at 每次都从头上开始找 //
p(m.lookingAt()); //
p(m.lookingAt()); //
p(m.lookingAt()); //
p(m.lookingAt());
/*
Pattern p1 = Pattern.compile("java",Pattern.CASE_INSENSITIVE);
String _string = "java Java JAVA Ilove java You hate Java";
Matcher mm = p1.matcher(_string);*/
// while(mm.find()) {
// p(mm.group());
// }
// String _string1 = mm.replaceAll("JAVA");
// p(_string1);
/* StringBuffer buf = new StringBuffer();
int i = 0;
while(mm.find()) {
i++;
if(i%2 == 0) {
mm.appendReplacement(buf, "****");
}
else {
mm.appendReplacement(buf, "----");
}
}
mm.appendTail(buf);
p(buf);*/
//regular group (
Pattern p2 = Pattern.compile("(\d{3,5})([a-z]{2})");
Matcher m2 = p2.matcher("12345fg--5456uu-234cc-00");
while(m2.find()) {
p(m2.group(2));
}
}
public static void p(Object o) {
System.out.println(o);
}