正则表达式

正则表达式是一种强大而灵活的文本处理工具,通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式的语法

  1. 字符

-元字符

元字符

意义

.

匹配除”\r\n”之外的任何单个字符

^

匹配字符串开始位置

$

匹配字符串结束位置

\s

匹配空格字符,等价于[\f\n\r\t\v]

\S

匹配非空格字符

\w

匹配单词类字符,等价于[A-Za-z0-9_]

\W

匹配非单词类字符

\d

匹配任意数字,等价于[0-9]

\D

匹配非数字字符,等价于[^0-9]

-组合元字符

正则表达式中,我们可以用中括号[]括起来若干字符,再进行交并差的运算,如下

字符组

意义

[abc]

匹配a、b、c中的任何一个字符

[^abc]

匹配除a、b、c以外的任何字符

[a-zA-Z]

匹配任意一个英文字母

[a-d]

匹配a至d的任意一个字母

[a-d[x-z]]

并(或)运算,匹配a、b、c、d或x、y、z中任意一个

[a-z&&[x-z]]

交(与)运算,匹配x、y、z

[a-f&&[^bc]]

差运算,匹配a、d、e、f

注意:[]括起来的部分只匹配一个字符。不要出现[]嵌套()的表达式!

  1. 量词

进行正则表达式匹配时,通过设置量词,可以限定某个字符匹配的次数。

量词格式

意义

X?

表达式X出现0次或1次,等价于{0,1}

X*

表达式X出现0次或多次,等价于{0,}

X+

表达式X出现1次或多次,等价于{1,}

X{n}

表达式X正好出现n次

X{n,}

表达式X至少出现n次

X{n,m}

表达式X出现n次至m次

注意:量词对它前面的字符表达式生效,通过()可以将几个元字符组合到一起形成词组表达式来使用量词。()括起来的词组可以用|来进行“或”运算。

通过元字符与量词的组合,可以写出正则表达式以适用于各种场景下的特定格式字符串匹配。

贪婪与非贪婪模式匹配

在量词后加上?就表示非贪婪模式,不加则为贪婪模式。

在使用时,贪婪模式会尝试尽可能多的匹配,非贪婪模式则匹配到第一个符合规则的内容就停止匹配。

贪婪模式

非贪婪模式

E*

E*?

E+

E+?

E{m,}

E{m,}?

E{m,n}

E{m,n}?

[正则表达式]String()的应用

matches()方法

字符串通过matches()方法验证是否符合某个规则文本的特征,如下

//规则文本
String dotRegex="...老师";
//验证字符串是否符合正则的规则
System.out.println("kuki老师".matches(dotRegex));
System.out.println("hi老师".matches(dotRegex));
System.out.println("roy老师".matches(dotRegex));

#输出结果

false
false
true

Split()方法

split()方法将字符串从正则表达式匹配的位置截取为字符串数组。

String s="[x,9,x,7,x,6,x,8,0]";

//以,[]把字符串拆开,获得字符串组
String[] split=s.split(",|\\[|\\]");
System.out.println("#获得字符串组的输出结果");
System.out.println(Arrays.toString(split));

//通过遍历去把把字符组中每个跟成员打印出来
System.out.println("#打印遍历后成员的值");
for (String s1 : split) {
    System.out.println(s1);
}

#输出结果

#获得字符串组的输出结果
[, x, 9, x, 7, x, 6, x, 8, 0]

#打印遍历后成员的值
x
9
x
7
x
6
x
8
0

replaceAll

replaceFirst()和replaceAll()分别替换正则表达式第一个匹配的子串或者替换整个字符串String中所有匹配正则表达式的内容。

String s="[1,9,3,7,4,6,5,8,0]";
//把字符串的1到5全部替换成x
String x = s.replaceAll("[1-5]","x");
System.out.println(x);

#输出结果

[x,9,x,7,x,6,x,8,0]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值