正则表达式在Java中的用法

正则表达式

1.用处:用于匹配字符串

2.工具类

1.Pattern类

  • 看JDK源码可知,Pattern类的构造方法被private修饰,没有提供公共的构造方法!
    在这里插入图片描述

  • 那在外部如何创建对象呢?
    在这里插入图片描述
    进一步看源码可知,Pattern类里面提供了1个compile的静态方法,返回一个new Pattern,可知:可通过Pattern.compile(参数)来创建一个Pattern对象

2.Matcher类

  • 同Pattern类一样,Matcher类也没有提供公共的构造方法!

在这里插入图片描述

  • 那在外部如何创建对象呢?

在这里插入图片描述

在Pattern类的内部有一个matcher方法来new一个Matcher对象

3.使用

Pattern.matches(regex, input);

第1个参数是 你想要按照怎样的字段匹配,regex --> 正则表达式

第2个参数是 你提供的字符串 input --> 输入

如果匹配成功,则返会true,否则返会false

在这里插入图片描述

4.用法

1.整体

regex含义
.任意1个字符
[]例如[a-z],表示在 大于或等于a且小于或等于z的范围内,取1个字符(只能取1个)
|逻辑或
()匹配多个字符
^范围取反
+例如[a-z]+, 在a到z的区间内取大于或等于1个的字符(可不相同)
{}例如[a-z]{3, 5},在a-z的范围内取3到5个字符(这里不能敲空格)
*代表任意个字符
\d取[0-9]之间的一个字符
\D表示除去[0-9]之间的,其他的任意一个字符,即[^0-9]
\w\w表示[0—9A—Z_a—z]
\W[^_0—9A—Z_a—z]

2.详细介绍

		// Pattern.matches(regex, input)
		// 001 . Java中 "a.c"-->代表 "^a.c$" ,不写也会默认加上 ^和$,表示以a开始,以c结束 
		System.out.println(Pattern.matches("a.c", "abc")); // true
		// 只有严格的以a开始,中间包含1个字符的,才返回true
		System.out.println(Pattern.matches("a.c", "aaabcccc")); // false
		System.out.println(Pattern.matches("a.c", "ac")); // false
		System.out.println("---------------");
		
		// 002 [] [a-z]表示在 大于或等于a且小于或等于z的范围内,取1个字符(只能取1个)
		System.out.println(Pattern.matches("a[a-z]c", "abc")); // true
		System.out.println(Pattern.matches("a[a-z]c", "ayc")); // true
		System.out.println(Pattern.matches("a[a-z]c", "abyc")); // false
		System.out.println("---------------");
		
		// 003 | 逻辑或
		System.out.println(Pattern.matches("[a-z|A-Z|_|$]", "$")); // true
		System.out.println(Pattern.matches("[a-z|A-Z|_|$]", "_")); // true
		System.out.println(Pattern.matches("[a-z|A-Z|_|$]", "A")); // true
		System.out.println("---------------");
		
		// 004 () 匹配多个字符
		System.out.println(Pattern.matches("a(bb|c|dd)c", "abbc")); // true
		System.out.println(Pattern.matches("a(bb|c|dd)c", "acc")); // true
		System.out.println(Pattern.matches("a(bb|c|dd)c", "addc")); // true
		System.out.println("---------------");
		
		
		// 005   ^   范围取反
		// 在a到z的范围取1个字符,则返回true
		System.out.println(Pattern.matches("[a-z]", "b")); // true
		// 在a到z的范围取1个字符,返回false;在a到z的范围之外,返回true
		System.out.println(Pattern.matches("[^a-z]", "b")); // false
		System.out.println(Pattern.matches("[^a-z]", "A")); // true
		System.out.println("---------------");
		
		// 006 + 在某个范围内至少有1个字符
		// [a-z]+ 在a到z的区间内取多个可不相同的字符
		System.out.println(Pattern.matches("a[a-z]+c", "abc")); // true
		System.out.println(Pattern.matches("a[a-z]+c", "ac")); // false
		System.out.println(Pattern.matches("a[a-z]+c", "abbc")); // true
		System.out.println(Pattern.matches("a[a-z]+c", "abdc")); // true
		System.out.println("---------------");
		
		// 007 ? 在某个范围内 取0个或者1个字符
		System.out.println(Pattern.matches("a[a-z]?c", "ac")); // true
		System.out.println(Pattern.matches("a[a-z]?c", "ayc")); // true
		System.out.println(Pattern.matches("a[a-z]?c", "axyc")); // false
		System.out.println("---------------");
		
		// 008 [a-z]{3,} 在某个范围内 取3个或者3个以上字符
		// 	 [a-z]{3, 5}在a-z的范围内取3到5个字符(这里不能敲空格)
		System.out.println(Pattern.matches("a[a-z]{3,5}c", "axyc")); // false
		System.out.println(Pattern.matches("a[a-z]{3,5}c", "axyzc")); // true
		System.out.println(Pattern.matches("a[a-z]{3,5}c", "axyzxc")); // true
		System.out.println(Pattern.matches("a[a-z]{3,5}c", "axyzxyc")); // true
		System.out.println("---------------");
		
		// 009 * 代表0次或者多次
		// b的前面、后面可以是0个或多个字符,即:后面的字符串包含b即可
		System.out.println(Pattern.matches(".*b.*", "byc")); // true
		System.out.println(Pattern.matches(".*b.*", "axb")); // true 
		System.out.println(Pattern.matches(".*b.*", "axbyc")); // true
		System.out.println("---------------");
		
		// 010 快捷符号
		//  01 \d表示取[0-9]之间的一个字符
		//  02 \D表示除去[^0-9]之间的,其他的任意一个字符
		//  03 \w表示[0—9|A—Z|_|a—z]
		//  04 \W表示[^_|0—9|A—Z|a—z]
		//						因为.是特殊字符所以我要转义.所以我需要工具\来转义
		// 						所以我要\,.也是特殊字符,所以我要转义\,通过\转义\来拿到工具\
		System.out.println(Pattern.matches(".*\\..*", "5.6")); // true	
		System.out.println(Pattern.matches(".*\\..*", "abc.xy")); // true	
		System.out.println("---------------");
		
			//  01 \d表示取[0-9]之间的一个字符
			//  02 \D表示除去[^0-9]之间的,其他的任意一个字符
		System.out.println(Pattern.matches("\\d", "5")); // true	
		System.out.println(Pattern.matches("\\d", "5y")); // false
		System.out.println(Pattern.matches("\\D", "a")); // true	
		System.out.println(Pattern.matches("\\D", "$")); // true	
		System.out.println(Pattern.matches("\\D", "_")); // true	
		System.out.println("---------------");
			//  03 \w表示[_|0—9|A—Z|a—z]
			//  04 \W表示[^_|0—9|A—Z|a—z]	
		System.out.println(Pattern.matches("\\w", "_")); // true	
		System.out.println(Pattern.matches("\\w", "5")); // true	
		System.out.println(Pattern.matches("\\w", "A")); // true	
		System.out.println(Pattern.matches("\\w", "z")); // true	
		System.out.println(Pattern.matches("\\w", "$")); // false
		System.out.println("---------------");
		
		System.out.println(Patter.matches("\\W", "$")); // true	
		System.out.println(Pattern.matches("\\W", "_")); // false	
	

注:本文是个人学习Java过程中的一些理解与心得,以理解为主,口头语言描述的可能不很恰当以及知识点不太全面,但如有错误,请大家批评指正,互相学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值