第十一节 Java 正则表达式

1. 正则表达式简介

1.1使用正则表达式的好处:

(1)一个正则表达式就是一个描述规则的字符串
(2)只需要编写正确的规则,就可以让正则表达式引擎去判断目标字符串是否符合规则
(3)正则表达式是一套标准,可以用于任何语言
(4)JDK内置正则表达式引擎:java.util.regex
在这里插入图片描述

1.2 如何编写正则表达式

(1)精确匹配:“a&c",特殊字符需要转义,匹配(a&c)
(2)非ASCLL字符,比如中文字符,我们要用"\u####表示
(3)特殊符号 . 可以匹配任意一个字符:例如“a.c"可以匹配"abc"、"adc"等等,不可以匹配“abdc”等
(4)符号 \d 可以匹配一个数字:例如"00\d"可以“003”、“004”等等,不可以匹配"0023"等
(5)符号\w 可以匹配一个字母、数字或下划线:例如“java\w”可以匹配“javac”、“java8”、“java_”等,不可以匹配“java#”等
(6)符号\s可以匹配一个空白字符:例如“A\sB”可以匹配“A B”,“A B”tab键也算空白字符等,不可以匹配“AB”、“A B”
(7)符号\D可以匹配一个非数字:例如“00\D”可以匹配“00A”、“00B”等,不可以匹配“001”、“002”等
(8)符号\W可以匹配一个非字母、数字或下划线:例如“java\W”
可以匹配“java!”、“java ”等,不可以匹配“javaw”,“java2”等
(9)符号\S可以匹配一个非空白字符:例如“A\SB”可以匹配“A&B”、“ABB”等,不可以匹配“A B”、“A B”tab键
(10)修饰符*可以匹配任意个字符:例如:“A\d*”可以匹配“A”、“A1”、“A007”等,不可以匹配“AB”
(11)修饰符 + 可以匹配至少一个字符:例如“A\d+”可以匹配“A1”、“A007”等,不可匹配“A”、“AB”
(12)修饰符?可以匹配零个或一个字符:例如“A\d?”可以匹配“A”、“A1”等,不可匹配“A12”、“AB”
(13)修饰符{ n }可以匹配n个字符:例如“\d{ 6 }”可以匹配“123456”、“999999”等,不可以匹配“12345”,“1234A”
(14)修饰符{ n ,m}可以匹配n-m个字符:例如“\d{3 , 5}可以匹配”123“、”12345“等,不可以匹配”12“、”123456“等
在这里插入图片描述

2. 分组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这是因为,正则表达式首先要编译成一个Pattern对象然后再进行匹配。
在这里插入图片描述
在这里插入图片描述

3. 复杂匹配规则

(1)^和KaTeX parse error: Undefined control sequence: \d at position 15: 匹配开头和结尾:例如:"^A\̲d̲{3}"可以匹配"A001"、“A999”等,不能匹配“A9999”、“B001”等
(2)[…]可以匹配范围内的字符:例如“[abc]1”可以匹配“a1”、“b1”、“c1,只能匹配范围内的一个字符,不可以匹配“ab1”、“x1”等。

还可以这样写“[a-f]1”可以匹配“a1”、“b1”、“f1”等,不可以匹配“g1”、“ab1”等

还可以这样写:“[a-f0-9]{6}”这样就就可以匹配a到f,0到9的六个字符的字符串,例如:“[a-f0-9]{6}”可以匹配“1a2b3c”、“ffffff”、等,不可以匹配“abc12”、“A0000F”等
还可以这样写:“[a-f0-9_]{6}”表示可以匹配0-9和a-f以及下划线这范围内的六个字符

[^…]可以匹配非范围内的字符:例如:“[^0-9]{6}”可以匹配非数字的六个字符
(3)AB|CD可以匹配AB或CD:例如“java|php”可以匹配java或php
例如“learn\s(java|php)”可以用来匹配learn java或learn php
如果去掉括号就只能匹配learn java或php了
在这里插入图片描述

4. 非贪婪匹配

(1)给定一个字符串表示的数字,判断该数字末尾0的个数
在这里插入图片描述
在这里插入图片描述
这里用?号来表示非贪婪匹配。
在这里插入图片描述
在这里插入图片描述

5. 使用正则表达式进行搜索和替换

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
反向引用
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值