通过视频的学习,总结了一些可能会用到的东西,有一些类在日后的学习生活中还得继续通过查询API,百度的方式学习。
常见类:String StringBuffer Integer Math Random System BigInteger BigDecimal Date SimpleDateFormat Calendar
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JavaApplication3 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// 正则表达式
//1.字符类
String regrex="[abc]"; //[]代表单个字符 且仅当字符为a b或c时才返回ture
String regrex1="[^abc]"; // 当该字符不为a、b或者c时才返回ture,^表否定的意思
String regrex2="[a-zA-Z]"; // 当该字符为a-z 或者A-Z内返回ture,两头都包含,取并集.
String regrex3="[a-z&&[def]]"; // 取交集,该式子实际上就是取def中的一个
//后两个以此类推
String regrex4="[a-z&&[^bc]]";
String regrex5="[a-z&&[^m-p]]";
System.out.println("a".matches(regrex));
System.out.println("d".matches(regrex));
System.out.println("a".matches(regrex1));
System.out.println("d".matches(regrex1));
System.out.println("a".matches(regrex2));
System.out.println("%".matches(regrex2));
//2.预定义字符类
String regrex6="."; // .代表的是任意字符,一个“.”代表一个,依此类推
String regrex7="\\d"; // \d代表的是数字,即0-9。而第一个“\”代表的是转义字符,所以想代表\d,则必须写为\\d
String regrex8="\\D"; // \D代表的是非数字
String regrex9="\\s"; // \s代表的是空白字符
String regrex10="\\S"; // \S代表的是非空白字符
String regrex11="\\w"; // \w代表的是单词字符
String regrex12="\\W"; // \W代表的是非单词字符
//3.数量词
String regrex13="[abc]?"; // X? X,表示的是一次或者一次也没有
String regrex14="[abc]*"; // X* X,代表的是零次或多次,即零次以上
String regrex15="[abc]+"; // X+ X,代表的是一次或多次,即一次以上
String regrex16="[abc]{5}"; // X{n} X,代表的是恰好n次
String regrex17="[abc]{5,}"; // X{n,} X,代表的是至少n次
String regrex18="[abc]{5,10}"; // X{n,m} X,代表的是至少n次,但是不超过m次,包含m次
System.out.println("a".matches(regrex13)); //这就是表示仅出现一次
System.out.println("d".matches(regrex13)); //这不表示为一次也没有,所以为false
System.out.println("".matches(regrex13)); //这就表示为一次也没有,所以为true
System.out.println("".matches(regrex14)); //表示零次,为true
System.out.println("abc".matches(regrex14)); //这表示为多次,为true
System.out.println("a".matches(regrex14)); //一次同样为true
//4.正则表达式的分割功能 Split
String s="金三胖 金四胖 金五胖";
String[] arr=s.split(" "); //切割符为空格
for(int i=0;i<arr.length;i++)
{
System.out.println(arr[i]);
}
String s1="金三胖.金四胖.金五胖";
String[] arr1=s1.split("\\."); //该切割符不能为“.”的原因是因为“.”为任意字符,会把全部都切断,而又由于特殊原因,该处得用两个转义字符\\转换
for(int i=0;i<arr.length;i++)
{
System.out.println(arr[i]);
}
//5.正则表达式的替换功能 replaceAll
String sss="wo3aa4ss";
String regrex19="\\d";
String s2=sss.replaceAll(regrex19, "");
System.out.println(s2);
//6.正则表达式的分组功能
/* A:正则表达式的分组功能
* 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
*
1 ((A)(B(C)))
2 (A
3 (B(C))
4 (C)
组零始终代表整个表达式。
B:案例演示
a:切割
需求:请按照叠词切割: "sdqqfgkkkhjppppkl";
b:替换
需求:我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程
将字符串还原成:“我要学编程”。
*/
demo1();
demo2();
/*
* 需求:我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程
将字符串还原成:“我要学编程”。
*/
String sd = "我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程";
String sq = sd.replaceAll("\\.+", "");
String sw = sq.replaceAll("(.)\\1+", "$1");//$1代表第一组中的内容
System.out.println(sw);
//7.Pattern与Matcher
Pattern p=Pattern.compile("a*b"); //获取正则表达式
Matcher m=p.matcher("aaaaab"); //获取匹配器
boolean b=m.matches(); //看是否能匹配,匹配则返回ture
System.out.println(b);
System.out.println("aaaaab".matches("a*b")); //与上面结果一样
//8.正则表达式的获取功能,Pattern与Matcher的结合使用
//要求一个字符串的手机号码
String number="我的手机号18898285656,曾经用过的为18898284545,还有17898287878";
String regex2="1[3578]\\d{9}"; //手机号码的正则表达式
Pattern p1=Pattern.compile(regex2);
Matcher m1=p1.matcher(number);
while(m1.find())
System.out.println(m1.group());
/*
9.常见类: Math Random System BigInteger BigDecimal Date SimpleDateFormat Calendar
*/
}
public static void demo2() {
//需求:请按照叠词切割: "sdqqfgkkkhjppppkl";
String s = "sdqqfgkkkhjppppkl";
String regex = "(.)\\1+";//+代表第一组出现一次到多次
String[] arr = s.split(regex);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void demo1() {
//叠词 快快乐乐,高高兴兴
String regex = "(.)\\1(.)\\2";//\\1代表第一组又出现一次 \\2代表第二组又出现一次
System.out.println("快快乐乐".matches(regex));
System.out.println("快乐乐乐".matches(regex));
System.out.println("嘻嘻哈哈".matches(regex));
System.out.println("快乐快乐".matches(regex));
//叠词
String regex2 = "(..)\\1";
System.out.println("死啦死啦".matches(regex2));
System.out.println("高兴高兴".matches(regex2));
System.out.println("快快乐乐".matches(regex2));
}
}
-----