正则表达式

正则表达式:

1、原义字符

​ 字符本身就是一个正则

//字符串中有一个方法替换所有符合要求的字符串。

//String replaceAll(String regex, String replacement)

//regex表示要被替换的字符,replacement表示要替换的字符。

//如果没有匹配到符合正则表达式规则的式子,返回原来的字符串。

2、元字符:

​ 字符类:

//表示格式:[]

//[]表示将字符进行归类,可以匹配出现在中括号中的任意一个字符

//regex = “[ab2]”;

//只要被匹配的字符串中存在a,b,2中任何一个,都会被替换

//regex = “[^ab2]”;

//^出现在中括号中,代表的意思式取反,对不是ab2的字符进行匹配

​ 范围类 :基于字符类的基础之上增加的内容

//[a-z]表示的是匹配a到z中的任意一个小写字母

//[A-Z]表示的是匹配A到Z中的任意一个大写字母

//既想匹配小写又想匹配大写[a-zA-Z]

//想匹配数字咋办?用[0-9]

//既想匹配小写又想匹配大写和数字[a-zA-Z0-9]]

范围类缩写:

\d == [0-9] 数字 <regex = “\d”>第一个\表示转义字符

\D == [^0-9] 非数字

[\t\n\x0B\f\r] == \s 匹配所有空白字符:

[^ \t\n\x0B\f\r] == \S//匹配所有非空白字符

\w == [a-zA-Z0-9] //匹配所有的大小写字母和数字

\W == [^a-zA-Z0-9] 匹配所有的大小写字母和数字

. 任何字符(与行结束符可能匹配也可能不匹配)

.匹配字符串中的.

边界字符

​ ^:以xxx开头

​ $:以xxx结尾

​ \b:单词边界

​ \B:非单词边界

量词分类:

​ ?:出现0次或者1次

​ +:出现1次或者多次

​ *:出现任意次

​ {n}:出现正好n次

​ {n,m}:出现n-m次

​ {n,}出现至少n次

3、分组

	 用小括号表示

//表示匹配abc这个整体出现了1次到2次 regex = “(abc){1,2}”;

4、反向引用

使用$引用对应组号的内容,每一个匹配的内容组号从1开始编号

String regex = “(\d{4})-(\d{2})-(\d{2})”;

String str = “2018-04-27 2021-12-17”;

System.out.println(str.replaceAll(regex, “$2/$3/$1”));

结果:04/27/2018 12/17/2021

//分组中如果不想要生成分组编号,可以通过?:来实现

regex = “(\d{4})-(?:\d{2})-(\d{2})”;

str = “2018-04-27 2021-12-17”;

System.out.println(str.replaceAll(regex, “$2/$1”));

结果:27/2018 17/2021

正则表达式在java中的应用

1、字符串的查找操作:Pattern和Matcher。

2、字符串匹配操作:可以用该字符串的matchers方法。

3、字符串的替换操作:字符串的replaceAll()和replaceFirst()方法。

4、字符串的分割:字符串的split()方法 是企业开发中常用的字符串分割方法。

regex = “\w{3,7}”;

Pattern compile = Pattern.compile(regex);

Matcher matcher = compile.matcher(“abcd123aaaa112321dddd333”);

//总匹配结果,会截取掉第一次匹配的结果

System.out.println(matcher.matches());//false

//第二次匹配结果

System.out.println(matcher.find());//true

System.out.println(matcher.end());//14

System.out.println(matcher.group());//aaaa112

//第三次匹配结果

System.out.println(matcher.find());//true

System.out.println(matcher.end());//21

System.out.println(matcher.group());321dddd

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值