java中正则表达式的应用

java中正则表达式的应用

  • 判断功能
    • public boolean matches(String regex)
  • 分割功能
    • public String[] split(String regex)
  • 替换功能
    • public String replaceAll(String regex,String replacement)
  • 获取功能
    • Pattern和Matcher类的使用

判断功能
public boolean matches(String regex)

 /*需求:
 * 		判断手机号码是否满足要求?
 * 
 * 分析:
 * 		A:键盘录入手机号码
 * 		B:定义手机号码的规则
 * 			13436975980
 * 			13688886868
 * 			13866668888
 * 			13456789012
 * 			13123456789
 * 			18912345678
 * 			18886867878
 * 			18638833883
 * 		C:调用功能,判断即可
 * 		D:输出结果
 * 我们目前就用这几个电话号码来定义规则
 */
 import java.util.Scanner;
class test{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		//提示输入手机号
		System.out.println("请输入一个手机号码");
		String phone = sc.nextLine();	
	
		//定义手机号规则,首先观察上面手机号,都是以1开头,
		//其次就是以3 8开头,剩下的都式数字,所以定义规则就是
		String regex = "1[38]\\d{9}";
		//解释一下,第一个1就是说明以1开头然后[38]就是说明选择3或者8
		//\\就是说明是全部数字,{9}说明恰好是多少数字
		//因为前面有1[38]两个数字了,所以{9}再加上2就是11,电话号码11位
	
		//调用判断功能
		boolean falg =phone.matches(regex);
		System.out.println("falg:"+falg);
	}
}

输出结果
在这里插入图片描述


分割功能
public String[] split(String regex)

通过正则表达式的匹配拆分此字符串

/*
	需求:我们需要输出一个年龄,如果是在18-24,
		  就输出“你是我要找的人”否则输出“你不是我要找的”
	分析:
		A:键盘录入一个年龄
		B:定义规则
		C:调用方法
		D:输出结果
*/
class test{
	public static void main(String[] args){
		//定义一个搜索范围
		String ages = "18-24";
		//定义规则,既然要得到18 24就要把"-"拆掉,所以直接定义规则
		String regex = "-";
		//调用方法,调用拆分方法,把"-"拆掉
		String[] strArray = ages.split(regex);
		//遍历一下就得到结果
		for(int x = 0 ; x<strArray.length ; x++){
			System.out.println(strArray[x]);
			//输出结果为18  24
		}
	------------------------------------------------------------	
		//通过上面的代码,我们知道了拆分的原理
		//定义一个搜索范围
		for(int i = 0 ; int i <= 2 ; i++){
		String ages = "18-24";
		//定义规则,既然要得到18 24就要把"-"拆掉,所以直接定义规则
		String regex = "-";
		//调用方法,调用拆分方法,把"-"拆掉
		String[] strArray = ages.split(regex);
	
		//但是我们需要用int类型
		//如何得到一个int类型呢?
		//用Integer.parseInt();将字符串数组转为int类型
		int startage = Integer.parseInt(strArray[0]);
		int endage = Integer.parseInt(strArray[1]);
	
		
		//键盘录入一个年龄
		Scanner sc = new Scanner(System.in);
		//提示输入年龄
		System.out.println("请输入你的年龄:");
		int age = sc.nextInt();
		if(age>=startage && age<=endage){
			System.out.println("你是我要找的人");
		}else{
			System.out.println("你不是我要找的")	;
		}
		}
	}
}

输出结果为
在这里插入图片描述
替换功能
public String replaceAll(String regex,String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串

class test{
	public static void main(String[] args){
		//定一个字符串 
		String s = "hello215what205you11111235do";

	
		//我要去除所有的数字,用*给替换掉
		//定义规则
		String regex = "\\d+";
		//用*替换
		String ss = "*";
		//调用方法,用String类型接受
		String x = s.replaceAll(regex,ss);
		System.out.println("x:"+x);
		//输出结果为:x:hello*what*you*do
--------------------------------------------------------------------
		
		//定一个字符串 
		String s = "hello215what205you11111235do";
		//我要去除所有的数字,用*给替换掉
		//这次我们这样替换,遇到数字就换成*
		
		//定义规则
		String regex = "\\d";
		//用*替换
		String ss = "*";
		//调用方法,用String类型接受
		String x = s.replaceAll(regex,ss);
		System.out.println("x:"+x);
		//输出结果为:x:hello***what***you********do
--------------------------------------------------------------------
		//直接把数字去掉
		//定一个字符串 
		String s = "hello215what205you11111235do";
		//我要直接除取去所有的数字	
		//定义规则
		String regex = "\\d";
		//用""代替
		String ss = "";
		//调用方法,用String类型接受
		String x = s.replaceAll(regex,ss);
		System.out.println("x:"+x);
		//输出结果为:x:hellowhatyoudo
		
	}
}

获取功能
Pattern和Matcher类的使用

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
 * 获取功能
 *		Pattern和Matcher类的使用
 *		
 *		模式和匹配器的基本使用顺序
 *
 *	获取功能:
 * 获取下面这个字符串中由三个字符组成的单词
 * da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing 		bu?
 */
public class RegexDemo {
	public static void main(String[] args) {
		// 定义字符串
		String s = "da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";
		// 规则
		String regex = "\\b\\w{3}\\b";

		// 把规则编译成模式对象
		Pattern p = Pattern.compile(regex);
		// 通过模式对象得到匹配器对象
		Matcher m = p.matcher(s);
		// 调用匹配器对象的功能
		// 通过find方法就是查找有没有满足条件的子串
		// public boolean find()
		// boolean flag = m.find();
		// System.out.println(flag);
		// // 如何得到值呢?
		// // public String group()
		// String ss = m.group();
		// System.out.println(ss);
		//
		// // 再来一次
		// flag = m.find();
		// System.out.println(flag);
		// ss = m.group();
		// System.out.println(ss);

		while (m.find()) {
			System.out.println(m.group());
		}

		// 注意:一定要先find(),然后才能group()
		// IllegalStateException: No match found
		// String ss = m.group();
		// System.out.println(ss);
	}
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值