正则表达式
-
正则表达式是对字符串做判断的。可以使用正则表达式的规则快速简单的判断出字符串是否符合规则。
-
字符类
[abc] :[]表示一个字符,里面写了abc表示这个字符可以是a或b或c [^abc] :代表除a,b,c以外的任何字符 [a-z] :代表a到z这些所有的小写字母都可以 [0-9] :代表的是所有的数字都可以 [a-z0-9] :小写字母和数字都可以
-
逻辑运算符
[a-z&&^d] :可以是除了d之外的所有小写字母 [a|b|c] :a或b或c 和[abc]效果是一样的,所以这个不用
-
预定义字符
. :表示可以匹配任何字符 \d :表示0-9的数字,和[0-9]的效果是一样的 \w :表示单词字符,和[a-zA-Z_0-9]的效果是一样的
-
数量词
? : 表示0次或1次 * : 表示任意次 + : 表示1次或多次 {n} : 必须出现n次 {n,} : 至少出现n次 {n,m}: 可以出现n到m次
-
分组括号
()代表分组,第一对儿小括号是第一组,二个对儿小括号是第二组
-
代码演示
public class Demo02正则演示 { public static void main(String[] args) { //字符串和正则表达式判断的方法 //只能是一个字符,且必须是abc中的一个 //boolean b = s.matches("[abc]"); //只能是一个字符,且必须是abc以外的字符 //boolean b = s.matches("[^abc]"); //必须是两个字符,且第一个字符是abc中的一个,第二个字符是def中的一个 //boolean b = s.matches("[abc][def]"); //可以匹配一个任何字符 //boolean b = s.matches("."); //可以匹配一个数字 //boolean b = s.matches("\\d"); //出现0次或1次单词字符 //boolean b = s.matches("\\w?"); //出现一次或多次数字 //boolean b = s.matches("\\d+"); String s = "哈哈哈"; //第一位是单词字符,后面出现2到4个数字字符 //boolean b = s.matches("\\w\\d{2,4}"); //a0001-true B12-true 123-true //呵呵 嘿嘿 哈哈 AA bb //第一对儿()表示第一组,\\1表示再出现一次第一组的内容 //boolean b = s.matches("(.)\\1"); //第一对儿()表示第一组,\\1表示再出现一次第一组的内容{2}表示前面的内容出现2次 boolean b = s.matches("(.)\\1{2}"); //哈哈哈 String s = "哼哈哈哼"; //(.)表示第一组是任意字符 (.)表示第二组是任意字符 \\2表示第二组再出现一次 \\1表示第一组再出现一次 //一个组里面不是只能写一个字符可以任意写 boolean b = s.matches("(.)(.)\\2\\1"); System.out.println(b); } }
-
两个字符串中和正则表达式相关的方法
-
split()
public class Demo03和正则相关的方法 { public static void main(String[] args) { /* //split() String s = "123,456,789"; //split():切割 //按照,切割 String[] arr = s.split(","); System.out.println(arr.length); //3 */ //------------------------------------------------- //split() String s = "123.456.789"; //split():切割 //按照,切割 //方法的参数要的其实是一个正则表达式, .代表的是任意字符 //如果要让.代表点本身不让他代表任意字符,就需要转移 String[] arr = s.split("\\."); System.out.println(arr.length); //3 } }
-
replaceAll()
public class Demo04和正则相关的方法 { public static void main(String[] args) { String s = "just do it,wuyanzu521 nothing id impossible99"; //replace() :用新的字符串代替旧的字符串 //用*把d都替换掉 System.out.println(s.replace("d","*")); //replaceAll() :也是用新的字符串替换旧的字符串,但是第一个参数可以用正则 //.表示任意字符 在此时把所有字符都换成* //System.out.println(s.replaceAll(".","*")); //把每个数字换成* //System.out.println(s.replaceAll("\\d","*")); //把每段数字换成一个* System.out.println(s.replaceAll("\\d+","*")); } }```
-