写给自己的JAVA工程师之路-正则表达式

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, 1111111
		String 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());
	}
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值