java学习笔记16(正则表达式)
正则表达式:
定义:在pattern类中有简单规则定义,具有特殊含义的字符串;
作用:用于一些字符串,比如验证注册邮箱,密码,用户名等;
正则表达式的语法:
1)字符:'\'反斜杠
\t 代表制表符
\n 换行
\r 回车换行
2)字符类:[abc] a或者b或者c
[^abc] 否定abc
[a-zA-Z] 范围:从小写a-z大写A-Z
[0-9] 任意数字
[0-9a-z_A-Z] 下滑线
3)预定义字符类 :. 任意字符
\d 数字0-9
\w [0-9a-z_A-Z]
4)边界匹配:^ 代表的是行头
$ 代表的是结尾
\b 单词的边界
5)数量词:x? x出现一次或一次没有
x* x出现任意次数
x+ x至少出现一次
x{n} x出现的次数必须是n次
x{n,m} x最少出现n次,最多出现m次
x{n,}最少n次,多了不限
正则相关练习:matches()方法
public class ZhengZe { public static void main(String[] args) { checkMail(); } private static void checkMail() { String re="^[1-9][\\w]*@[a-zA-Z]*[\\.]+([\\w]{2,4})$"; //[1-9]数字1-9开头, //[\\w]*任意次数[a-zA-Z0-9] //[a-zA-Z]任意次数 //[\\.] .一次 //[\\w]{2,4} [a-zA-Z0-9]最少两次最多四次 //$结尾 String s="4587jfj@qq.com";//定义邮箱 boolean b=s.matches(re); System.out.println(b);//true String s1="03jhdbf3@qq.com"; boolean b1=s1.matches(re); System.out.println(b1);//false String s2="3345jkhf@qqcom"; boolean b2=s2.matches(re); System.out.println(b2);//false } }
split方法:
public class SplitDemo { //split()方法:按照给定的正则表达式的匹配拆分字符串,返回值为String数组 public static void main(String[] args) { Splitlx1(); } private static void Splitlx1() { String s="i love java"; String[] str=s.split(" +");//正则表达式:至少出现一次空格 for (int i = 0; i < str.length; i++) { System.out.println(str[i]); } System.out.println(str.length); } } /*i love java 3*/
replaceAll()方法:
public class ZhengZe1 { public static void main(String[] args) { replaceDemo(); } private static void replaceDemo() { String s="I475love49578java"; String s1=s.replaceAll("[\\d+]", "*"); System.out.println(s1);//I***love*****java String s2=s.replaceAll("[\\d]+", "*"); System.out.println(s2);//I*love*java } }