正则表达式

常用的例子

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
	static Scanner sc=new Scanner(System.in);
	public static void main(String[] args) {
		String s="0-670-82162-4";
		Pattern p=Pattern.compile("[^\\d]");//建立一个规则
		Matcher m=p.matcher(s);//用这个规则,对s建立对象
		String str=m.replaceAll("");//用新的规则去替换s对象里面旧的东西
		System.out.println(str);//输出新的规则定义下的东西
	}//输出:0670821624
		
}

正则表达式的好处:
1、正则表达式用来描述规则的字符串
2、只要正确描述表达式就可以使得正则表达式的引擎去判断目标表达式是否符合规则
3、正则表达式是一套标准,可以适合于任何语言
4、在jdk中,正则表达式的引擎在java.util.regex

常见正则表达式

1、匹配中文:[\u4e00-\u9fa5]
比如:Pattern p=Pattern.compile("[\\u4e00-\\u9fa5]");//匹配中文
2、英文字母:[a-zA-Z]
比如:Pattern p=Pattern.compile("[a-zA-Z]");//匹配符号
3、数字:[0-9]**
比如:Pattern p=Pattern.compile("[0-9]");
注意:这里的 “[]” 是要写在表达式上的,表示在这个范围内都可以匹配

简单匹配原则

1、特殊字符要转义——在java语言里是用两个反斜杠的(看上面匹配中文的例子)

2、非ascll需要用 “\u####” 来转义,比如“a和c”——>"a\u548cc” 来表示

3、用 “ . ” 来表示任意一个字符,比如 “a.c”可以表示“a-c”,“auc”等等(只能出现三个字符) 也可以用“ * ”来匹配任意一个字符,这个字符是任意的,长度也是任意的,比如“ A\d*”----->“A1”,“A007”,或者“A0009”,因为007,0009也是数字

这里对他们做一下区别:" . "可以放在匹配字符的前面或者后面,但是“*”只能放在匹配字符的后面,不可以放在前面
4、用 “ \d ” 可以表示一个数字,如“ 00\d” 可以表示为“007”,“001”,“009”等 用“ \D
”可以匹配一个非数字字符

5、用“ + ”来匹配至少一个字符,常常和其他字符一起用,如“ 1\d+”-------->“1636366”
6、用“ ?”可以匹配0个或者1个字符
7、用“ {n} ”表示匹配n个字符
8、用“ {n,m}” 表示匹配{n-m个字符} 11、用“ {n,}”表示匹配至少n个字符

在这里插入图片描述在这里插入图片描述

高阶匹配原则

1、“ ^ ”和“ $ ”匹配开头结尾,如“^A\d{3}$”----------->“A333”
2、[……]可以匹配范围内的字符,比如 “[asd]1 ”可以表示为“ a1”,“s1”,“d1”(值得注意的是:这个只能匹配范围内的一个字符,如上面“as1”是不允许的)
这个可以有其他的形式,比如([a-d]
还可以是多字符组合,如([a-f0-9]{6})表示由a-f,0-9组合而成的6个字符
3、[^…] 表示非范围内的可以匹配
4、用“ |”表示或者,比如“asd|dfg”--------->“asd”,“dfg”;(注意用的时候要用括号就要用括号)

在这里插入图片描述

分组匹配原则

()”用来快速分组,提取,如提取年月日:(yyyy)\-\(MM)\-\(dd)----->“yyyy”,“MM”,“dd”

常见的使用正则表达式的类

1、String.matches和pattern.matches的区别
一般来说,使用String正则表达式来快速匹配的时间效率会比较低,这是因为原来式子需要转换为pattren类型
所以我们可以直接把正则表达式直接编译为pattern对象,这样可以实现一次编译多次匹配

2、使用Matcher.group(n) 可以快速提取字串
在这里插入图片描述
在这里插入图片描述

直接匹配一个单词

Pattern p=Pattern.compile("[(Alice)(Bob)]");//匹配Alice或者BOb两个单词中的一个
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值