从零开始学java - 第七天

130 阅读3分钟

这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战

今天继续~

正则表达式

正则表达式语法

^ - 匹配输入字符串的开始位置

$ - 匹配输入字符串的结束位置

* - 零次或多次匹配前面的字符或表达式(zo* 匹配z或者zoo)

+ - 一次或多次匹配前面的字符或表达式(zo+匹配zo或zoo)

? - 零次或一次匹配前面的字符或表达式(y(ou)?匹配y或者you中的y)

{n} - 非负整数,代表正好匹配n次(o{2}与Bob不匹配,与food匹配)

{n,} - 非负整数,至少匹配n次(o{2}与Bob不匹配,与foooood匹配)

{n,m} - 非负整数,n<=m,至少匹配n次,至多匹配m次

? - 例如(0+?)匹配oooo,如果不加问号会匹配所有o,加了问号只会匹配一个o

(content) - 捕获内容并匹配表达式

(?:content) - 匹配但不捕获表达式

(?=content) - 例子Windows(?=95|2000)会匹配Windows 2000但不会匹配Windows 156

(?!content) - 反过来,例子Windows(?=95|2000)会匹配Windows 156但不会匹配Windows 2000

x|y - 匹配x或者y

[xyz] - 字符集,匹配任一字符,[abc]匹配plain里面的a

[^xyz] - 反向匹配,匹配不包含的,[^abc]匹配plain里面的plin

[a-z] - 字符范围,匹配指定范围内的任何字符,比如a-z就是匹配所有小写字母

[^a-z] - 反过来,匹配不到指定范围内的任何字符

\b - 匹配字的边界,例如"er\b"能匹配never的er,不能匹配verb中的er

\B - 上一个反过来,不匹配字的边界

\cx - 匹配控制字符,例如\cM就是ctrl+M

\d - 数字字符匹配,[0-9]

\D - 反过来,[^0-9]

\f - 换页符匹配

\n - 换行符匹配

\r - 匹配一个回车符

\s - 匹配任何空白字符

\S - 匹配任何非空白字符

\t - 制表符匹配

\v - 垂直制表符匹配

\w - 匹配任何字类字符,包括下划线,[A-Za-z0-9]

\W - 与任何非单词字符匹配

\xn - 匹配n,n是一个十六进制转码,只有两位

\num - 匹配num,num是一个正整数,例如(.)\1就是匹配两个连续的相同

\n - 标识一个八进制转义码或反向引用。如果 \n 前面至少有 n 个捕获子表达式,那么 n 是反向引用。否则,如果 n 是八进制数 (0-7),那么 n 是八进制转义码

\nm - 标识一个八进制转义码或反向引用。如果 \nm 前面至少有 nm 个捕获子表达式,那么 nm 是反向引用。如果 \nm 前面至少有 n 个捕获,则 n 是反向引用,后面跟有字符 m。如果两种前面的情况都不存在,则 \nm 匹配八进制值 nm,其中 n 和 m 是八进制数字 (0-7)

\nml - 当 n 是八进制数 (0-3),m 和 l 是八进制数 (0-7) 时,匹配八进制转义码 nml

\un - 匹配 n,其中 n 是以四位十六进制数表示的 Unicode 字符。例如,\u00A9 匹配版权符号 (©)

能力有限,最后四个没怎么看懂。。。也是过一遍有印象就行

今天就学到这,大家晚安~