java中的正则表达式

本文介绍了正则表达式的常见语法,包括预定义字符集、数量词、逻辑关系和分组等,并通过三个实例展示了如何使用正则表达式验证字符串和查找特定模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1,	正则表达式本身是一个字符串
2,	正则表达式的用途是检查匹配目标字符串

示例:(注意[]中表示任意一个字符)
1,	s[123456b] :匹配第一个字符为s第二个字符为123456b中任意一个
2,	s[1-6b]    :	。。。。。。。。。。。,第二个字符为1-6和b中任意一个
3,	[0-9] == \d	:\d代表任意一个数字
4,	[^abc]   		:^取反,除了abc之外的所有字符中的一个,包含中文
5,	[a-z&&[^bc]]    :a-z中除了bc之外的一个字符,&&表示并且
   一、 预定义字符集
	.  		:任意一个字符
	\d		:任意一个数字字符,相当于[0-9]
	\w		:任意一个单词字符相当于[a-zA-Z0-9]
	\s		:任意一个空白字符,相当于[\t\n\xOB\f\r]
	\D(大写)		:非数字字符
	\W(大写)		:非单词字符
	\S(大写)		:非空白字符
  二、	数量词
	X?		:表示0个或1个x
	X*		:表示0个或任意多个x
	X+		:表示1个到任意多个x(大于等于1个x)
	X{n}	        :表示n个x
	X{ n, }         :表示n个到任意多个x(大于等于n个x)
	X{ n,m }        :表示n个到m个x
   三、	逻辑关系
	|		:或者关系
	&		:并且关系
   四、	分组
	()		:用()进行分组

实例1,简单的正则表达式测试

package zhengze;

public class RegDemo01 {
	public static void main(String[] args) {
		/**
		 * 利用正则检验字符的整体是否符合规则
		 */
		//reg是正则
		String reg="[0-9]{6}";
		//code是被检查的字符串
		String code = "100080";
		//matches方法用于检查code的整体是否符合reg规则
		boolean b = code.matches(reg);
		System.out.println(b);  //true
	}
}

实例2,使用正则判断手机号输入是否规范

package zhengze;

import java.util.Scanner;

public class RegDemo2 {
	public static void main(String[] args) {
		/**
		 * 利用正则检验用户输入的是否是手机号
		 */
		String reg="(0086|\\+86)?\\s?1\\d{10}";
		System.out.println("请输入您的手机号");
		Scanner scan = new Scanner(System.in);
		String str = scan.nextLine();
		if(str.matches(reg)){
			System.out.println("格式正确");
		}else{
			System.out.println("NO!");
		}
		
	}
}

在一个字符串中查找符合正则规则的字符串:

package zhengze;

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

public class Mather {
	public static void main(String[] args) {
		/**
		 * 在一个字符串中查找符合正则规则的字符串
		 */
		String ss = "我的电话号码是:13315125412,"
				+ "你的电话号码是15733119876,"
				+ "ta的电话是15383239845";
		//将字符串放到StringBuilder中,这个对象有delete方法
		StringBuilder sb = new StringBuilder();
		sb.append(ss);
		//正则规则
		String regs = "(0086|\\+86)?\\s?1\\d{10}";
		//创建Pattern对象,给定查找规则
		Pattern pattern=Pattern.compile(regs);
		//matcher在ss上执行查询,返回查询结果处理器
		Matcher result=pattern.matcher(sb);
		//在“查询处理器”查询获得结果
		System.out.println("原字符串中有的手机号为:");
		while(result.find()){	//只要查到里面有,就循环
				int start = result.start();//获得结果集的开始位置
				int end = result.end();	//获取及国际的结束位置
				String s = result.group();//获取结果给字符串s保存
				System.out.println(s);
				sb.delete(start, end);
				//将改变过的字符串重新给处理器
				//matcher在sb上执行查询,返回查询结果处理器
				result=pattern.matcher(sb);
		}
		System.out.println(ss);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值