1 认识正则表达式
判断字符串是否由数字组成
最原始实现方式
public class demo {public static void main(String[] args) {String a = "123123" ;System.out.println(isNumber(a));}public static boolean isNumber(String str) {char [] ch = str.toCharArray();for(int x = 0 ; x < ch.length ; x++){if(ch[x] < '0' || ch[x] > '9'){return false;}}return true;}
}
使用正则表达式
public class demo {public static void main(String[] args) {String a = "123123" ;System.out.println(a.matches("\\d+"));}
}
很明显,正则表达式给我们的感受就是减少了代码量,加强了对String的操作支持
2 常用正则表达式
正则表达式起源1.4
支持包是java.util.regex,主要有两个类: Pattern , Matcher
1 字符(如果不加入量词则为单个字符)
a:表示由自定字符a表示
\\ :匹配转义字符
\t:匹配\t的转义字符
\n:匹配\n的转义字符
2 字符范围(如果不加入量词则为单个字符)
[abc]:表示可能是由a,b,c的任意一位[^abc]:表示不是a,b,c的任意一位
[a-zA-Z]:表示任意一位字母(大写或小写)
[0-9]:表示由任意一位数字组成
3 简化表达式(如果不加入量词则为单个字符)
.:表示任意一位字符
\d:表示任意一位数字
\D:表示任意一位非数字
\w:表示任意一位字符,由字母,数字,_所组成
\W:表示不是由字母,数字,_所组成
\s:表示任意的一位空格
\S:表示任意的一位非空格
4 边界匹配
^:表示正则匹配的开始
$:表示正则匹配的结束
5 量词描述(如果没有量词,那么每一个出现的正则只能匹配一个字符)
表达式?:表示此正则表达式可以出现0次或1次
表达式 +:表示此正则表达式可以出现1次或多次
表达式 *:表示此正则表达式可以出现0次,1次或多次
表达式{n}:表示正则表达式正好出现n次
表达式 {n,}:表示此正则表达式可以出现n次以上,包括n次
表达式 {n,m}:表示此正则表达式可以出现n~m次
6 逻辑运算
X正则Y正则:表示X正则之后紧跟着验证Y正则
X正则|Y正则:表示两个正则选一个
():一组正则
3 正则匹配
public class demo {public static void main(String[] args) {String a = "10.1" ;String b = "1111-11-11" ;String c = "(1111)-1111111" ;// 1111-1111111, 1111111String d = "asa-asd.asd_asd@ada-a_a.a.com";
// System.out.println(a.matches("\\d+(\\.\\d+)")); 匹配小数
// System.out.println(b.matches("\\d{4}-\\d{2}-\\d{2}")); 匹配日期
// System.out.println(c.matches("((\\d{4}-?)|(\\(\\d{4}\\)-?))\\d{7}")); 匹配电话号码
// System.out.println(d.matches("[a-zA-Z][a-zA-Z0-9_\\-\\.]{5,29}@[a-zA-Z0-9_\\-\\.]+\\.(com|net|com\\.cn)")); 匹配邮箱}
}
4 java.util.regex包的直接操作
1 Pattern类
public class demo {public static void main(String[] args) {String str = "asd879adad8sa7dadjahs";String regex = "[^a-zA-Z]+";Pattern pat = Pattern.compile(regex); // 编译正则System.out.println(Arrays.toString(pat.split(str)));}}
2 Matcher类
public class demo {public static void main(String[] args) {String str = "100" ;String regex = "\\d+" ;Pattern pat = Pattern.compile(regex); // 编译正则Matcher mat = pat.matcher(str) ;System.out.println(mat.matches());}
}