初学Java,总结正则表达式的知识,巩固今天所看。
定义:是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串,其实就是一种规则。
1.举例:对输入的qq号码进行判断:1、要求必须是5-15位数字 。2、0不能开头。3、必须都是数字
public class Demo1_Regex {
public static void main(String[] args) {
System.out.println(checkQQ("12345678963254789"));
String regex = "[1-9]\\d{4,14}";//使用正则表达式
System.out.println("2547896".matches(regex));
}
public static boolean checkQQ(String qq) {
boolean b = true;
if (qq.length() >= 5 && qq.length() <= 15) {
if (!qq.startsWith("0")) {
char[] arr = qq.toCharArray();// 将字符串转成字符数组
for (int i = 0; i < arr.length; i++) {
char a = arr[i];
if (a >= '0' && a <= '9') {
} else {
b = false;
}
}
} else {
b = false;
}
} else {
b = false;
}
return b;
}
}
注:java中\本身具有转义作用,\\表示\。\\d表示一位数字 。
2.预定义字符类。 . 任何字符。 \d 数字:[0-9]。 \D 非数字:[^0-9]。 \s 空白字符:[ \t\n\x0B\f\r]。 \S 非空白字符:[^\s] 。 \w 单词字符:[a-zA-Z_0-9] 。 \W 非单词字符:[^\w]。
3.字符类
public class Demo3_Regex {
public static void main(String[] args) {
// -?可能以负号开头,包括负号和无符号,\\d+表示一位或多位数字,|表示或
System.out.println("3564".matches("-?\\d+"));
System.out.println("-1455".matches("-?\\d+"));
System.out.println("+9845".matches("-?\\d+"));
System.out.println("+911".matches("(-|\\+?)\\d+)"));
// 运行结果true true false true
System.out.println("a".matches("[abc]"));// [abd]a或b或c单个字符
System.out.println("b".matches("[^abc]"));// [^abc]除a、b、c以外的其他单个字符
System.out.println("az".matches("[a-zA-Z]"));// 从a到z或从A到Z的任何单个字符
System.out.println("f".matches("[a-d[m-p]]"));// a到d或m到p
System.out.println("d".matches("[a-z&&[def]]"));// d,e,f(交集)
System.out.println("a".matches("[a-z]&&[^ac]"));//a-z与不是a/c字符的交集
//运行结果 true false false false true true
}
}
4.量词
* X? X,一次或一次也没有
* X* X,零次或多次
* X+ X,一次或多次
* X{n} X,恰好 n 次
* X{n,} X,至少 n 次
* X{n,m} X,至少 n 次,但是不超过 m 次
public class Demo3_Regex {
public static void main(String[] args) {
System.out.println("a".matches("[abc]?"));
System.out.println("abc".matches("[abc]*"));
System.out.println("".matches("[abc]+"));
System.out.println("aaaaa".matches("[abc]+"));
System.out.println("abcaa".matches("[abc]{5}"));
System.out.println("abcabcabcabcabcabc".matches("[abc]{5,}"));
System.out.println("abcabcabcabcabc".matches("[abc]{5,15}"));
//true true false true true true true
}
}
5.分割功能
String s="dad.mom.son";
String[]arr=s.split("\\.");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
} //dad mom son
注: | , + , * , ^ , $ , / , | , [ , ] , ( , ) , - , . , \ 等这些字符需要进行转义才能表示它本身。
String s1="mom|son";
String[]arr1=s1.split("|");
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i]+" ");
}
System.out.println();
String s2="mom|son";
String[]arr2=s2.split("\\|");
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i]+" ");
}
}//输出结果比较: m o m | s o n 和mom son