Java知识总结-正则表达式


说明:学习正则表达式其实就是在学习一些特殊符号的使用。


正则表达式:符合一定规则的表达式,

作用:用于专门操作字符串。

特点:用于一些特定的符号来表示一些代码操作,这样可以简化书写。

一,匹配。

通过String中的matches(String regex)方法来判断字符串是否符合规则,匹配则返回true。

示例1:匹配QQ号码

规则:

长度在5-11为之间,都为数字。

第一位不能为0,

public class Test {
	
	public static void main(String[] args) throws Exception{
		//定义规则
		String regex="[1-9]\\d{4,10}";
		String qq1="274559585";
		String qq2="1234";
		String qq3="0123456";
		String qq4="123456789";
		//匹配规则
		boolean b1=qq1.matches(regex);
		boolean b2=qq2.matches(regex);
		boolean b3=qq3.matches(regex);
		boolean b4=qq4.matches(regex);

		System.out.println(b1);
		System.out.println(b2);
		System.out.println(b3);
		System.out.println(b4);

	}
}

运行结果:

true
false
false
true

示例2:匹配手机号码。

规则:

都为数字;

长度11;

第一位为1;

第二为可以为3、5、8中一位。

public class Test {
	
	public static void main(String[] args) throws Exception{
		//定义规则
		String regex="1[358]\\d{9}";
		String qq1="13912345678";
		String qq2="1234567890";
		String qq3="000111222";
		String qq4="15001099585";
		//匹配规则
		boolean b1=qq1.matches(regex);
		boolean b2=qq2.matches(regex);
		boolean b3=qq3.matches(regex);
		boolean b4=qq4.matches(regex);

		System.out.println(b1);
		System.out.println(b2);
		System.out.println(b3);
		System.out.println(b4);

	}
}


运行结果:

true
false
false
true


二,切割

方法:

String类中的split(regex);

按照符合规则的子串来切割字符串。

示例1:根据字符串中任意数字或数字串来分割字符串。

public class Test {
	
	public static void main(String[] args) throws Exception{
		//定义规则
		String regex="\\d+";
		String s="afsa1ryh22rhrh86hdhfgh44tyiky";
		//匹配规则
		String[] str=s.split(regex);
		for(String ss:str){
			System.out.println(ss);
		}

	}
}

运行结果:

afsa
ryh
rhrh
hdhfgh
tyiky


示例2:根据重复的字母来切割字符串

public class Test {
	
	public static void main(String[] args) throws Exception{
		//定义规则
		String regex="(.)\\1+";
		String s="afsaa1ryh22rhrhh86hdhttfgh44tykkkiky";
		//匹配规则
		String[] str=s.split(regex);
		for(String ss:str){
			System.out.println(ss);
		}

	}
}

运行结果:

afs
1ryh
rhr
86hdh
fgh
ty
iky

三,替换

方法:

String类中replaceAll(String regex,String replacement)。

将该字符串中符合规则的子串替换成指定的字符串。

示例1:

将字符串中的叠词变为单个

public class Test {
	
	public static void main(String[] args) throws Exception{
		String s="nnnihhhhaooshhijiiie";
		//匹配规则
		String str=s.replaceAll("(.)\\1+","$1");
		System.out.println(str);
	}
}

运行结果:

nihaoshijie

示例2:

去除字符串中的空格

public class Test {
	
	public static void main(String[] args) throws Exception{
		String s="   h  e ll o   ,j  a v a   ";
		//匹配规则
		String str=s.replaceAll(" +","");
		System.out.println(str);
	}
}

运行结果:

hello,java


四,获取

将字符串中符合规则的子串取出;

操作步骤:

1.将正则表达式封装成对象;

2,让正则对象和要操作的字符串想关联;

3,,关联后获取正则匹配引擎;

4,通过引擎对符合规则的子串进行操作:比如取出。

示例1:获取字符串中的叠词

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
	
	public static void main(String[] args) throws Exception{
		String s="aaasddfgggghjjkllll";
		//定义规则
		String regex="(.)\\1+";
		//将规则封装成对象
		Pattern p=Pattern.compile(regex);
		//将正则对象和要操作的字符串想关联,并获取匹配器对象m
		Matcher m=p.matcher(s);
		//将规则作用到字符串上,并进行符合规则的子串查找。
		//找到符合规则的字符子串则返回true。
		while(m.find()){
			//获取符合规则的子串
			System.out.println(m.group());
			
		}
	}
}

运行结果:

aaa
dd
gggg
jj
llll


五,常见应用:匹配邮箱

判断一个邮件地址是否为合法的邮件地址

public class Test {
	
	public static void main(String[] args) throws Exception{
		String s1="afjwofief";
		String s2="123@sina.com";
		String s3="zxc@qwe";
		//定义规则
		String regex="\\w+@\\w+(\\.\\w+)+";
		System.out.println(s1.matches(regex));
		System.out.println(s2.matches(regex));
		System.out.println(s3.matches(regex));

	}
}


运行结果;

false
true
false



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值