java中的正则表达式

本文介绍了如何使用Java中的正则表达式进行字符串匹配,并详细解释了常见匹配符、数量词等概念。通过实例展示了不同匹配模式的效果,如贪婪、懒惰及强占模式,并提供了几个实用的正则表达式样例。

1.验证字符串是否匹配的方式:

     1.String 的.matches(regex)方法

      2.Pattern类

//1.输入正则表达式
	Pattern pattern=Pattern.compile(compile);
	//2.要匹配的字符
	Matcher matcher=pattern.matcher(match);
	//3.比较或查找
	matcher.matches();
	matcher.find();



2.正则表达式

2.1 String 对正则表达式的支持,重点掌握如下3个方法: 
matches() 匹配正则表达式  
split() 切分字符串为字符串数组  
replaceAll()
2.2常用匹配符

1.边界匹配器 
		^ 行的开头 
		$ 行的结尾 
		\b 单词边界 
		\B 非单词边界 
		\A 输入的开头 
		\G 上一个匹配的结尾 
		\Z 输入的结尾,仅用于最后的结束符(如果有的话) 
		\z 输入的结尾 
	2.字符类 
		[abc] a、b 或 c(简单类) 
		[^abc] 任何字符,除了 a、b 或 c(否定) 
		[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围) 
		[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集) 
		[a-z&&[def]] d、e 或 f(交集) 
		[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去) 
		[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去) 
  
	3.预定义字符类 
		. 任何字符(与行结束符可能匹配也可能不匹配) 
		\d 数字:[0-9] 
		\D 非数字: [^0-9] 
		\s 空白字符:[ \t\n\x0B\f\r] 
		\S 非空白字符:[^\s] 
		\w 单词字符:[a-zA-Z_0-9] 
		\W 非单词字符:[^\w] 
	4.1 Greedy 数量词 (贪婪)
		X? X,一次或一次也没有 
		X* X,零次或多次 
		X+ X,一次或多次 
		X{n} X,恰好 n 次 
		X{n,} X,至少 n 次 
		X{n,m} X,至少 n 次,但是不超过 m 次 
		  
	4.2 Reluctant 数量词 (懒惰)
		X?? X,一次或一次也没有 
		X*? X,零次或多次 
		X+? X,一次或多次 
		X{n}? X,恰好 n 次 
		X{n,}? X,至少 n 次 
		X{n,m}? X,至少 n 次,但是不超过 m 次 
		  
	4.3 Possessive 数量词 (强占)
		X?+ X,一次或一次也没有 
		X*+ X,零次或多次 
		X++ X,一次或多次 
		X{n}+ X,恰好 n 次 
		X{n,}+ X,至少 n 次 
		X{n,m}+ X,至少 n 次,但是不超过 m 次 

注意:
贪婪模式:在使用修饰匹配次数的特殊符号时 比如:"{m,n}", "{m,}", "?", "*", "+" 是尽可能地多匹配或尽可能的 "要匹配"
懒惰模式:尽可可能少的匹配,在贪婪模式后加?就是懒惰模式, 比如:"{m,n}?", "{m,}?", "??", "*?", "+?"
抢占模式:比上面的更严格,对整个字符串进行匹配,在贪婪模式后加+就是懒惰模式, 比如:"{m,n}+", "{m,}+", "?+", "*+", "++"


String match5="dfsgdfegdcfgvdfsdf";
		String p="df.*g";//贪婪匹配输出dfsgdfegdcfg
		String p2="df.*?g";//懒惰匹配输出dfsg和 dfeg
		String p3="df.*+g";//强占模式无输出,匹配不到
		//1.输入正则表达式
//		Pattern pattern=Pattern.compile(p);
//		Pattern pattern=Pattern.compile(p2);
		Pattern pattern=Pattern.compile(p3);
		//2.要匹配的字符
		Matcher matcher=pattern.matcher(match5);
		while(matcher.find()){
			System.out.println(matcher.group());
		}

重点注意:在java中使用正则表达式的时候,要注意“\”的转义,例如我要匹配$,则要写\$,匹配{则要用\{


下面列几个常用匹配:
1.匹配qq邮箱
[a-zA-Z0-9]+@(qq|QQ).com


2.匹配主机号
^([1-9]|[1-9]\\d{1,3}|[1-6][0-5][0-5][0-2][0-9]|[1-6][0-5][0-5]3[0-5])$


3.匹配端口号0~65535
(^[0-9]|[1-9]\\d{0,1}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9]\\d{0,1}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9]\\d{0,1}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9]\\d{0,1}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值