Java 正则表达式结构总结

Java 中的正则表达式是由各种表达式结构综合组合起来的, 以下就是 Java 正则表达式结构总结.

关键字

说明

字符表达式
x字符x
\\反斜线
\0n八进制值为 0n (0 <= n <= 7) 的字符
\0nn八进制值为 0nn (0 <= n <= 7) 的字符
\0mnn八进制值为 0mnn (0<=m<=3, 0 <= n <= 7) 的字符
\xhh十六进制值为 0xhh 的字符
\uhhhh十六进制值为 0xhhhh 的字符
\x{h...h}十六进制值为 0xh...h 的字符(Character.MIN_CODE_POINT <= 0xh...h <= Character.MAX_CODE_POINT
\N{name}Unicode 字符名称为 'name' 的字符
\t制表符('\u0009')
\n换行符('\u000A')
\r回车符('\u000D')
\f换页符('\u000C')
\a警报(铃)字符('\u0007')
\e转义符('\u001B')
\cxx对应的控制字符
字符类表达式
[abc]a, b 或 c (简单归类)
[^abc]任意字符除了 a, b 或 c (否定)
[a-zA-Z]a-z 或 A-Z 包含边界字符(区间)
[a-d[m-p]]a到d或m-p:[a-dm-p](联合)
[a-z&&[def]]d, e, 或 f (交集)
[a-z&&[^bc]]a 到 z 但排除bc:[ad-z] (减法)
[a-z&&[^m-p]]a 到 z 但排除其中的 m 到 p:[a-lq-z](减法)
预定义字符类表达式
.匹配任意字符(不一定会匹配行终止符)
\d数字:[0-9]
\D除了数字:[^0-9]
\h水平空白字符:[ \t\xA0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000]
\H非水平空白字符:[^\h]
\s空白字符:[ \t\n\x0B\f\r]
\S非空白字符:[^\s]
\v垂直空白字符:[\n\x0B\f\r\x85\u2028\u2029]
\V非垂直空白字符:[^\v]
\w单词字符:[a-zA-Z_0-9]
\W非单词字符:[^\w]
POSIX 字符类表达式(US-ASCII专用)
\p{Lower}小写字母字符:[a-z]
\p{Upper}大写字母字符:[A-Z]
\p{ASCII}全部 ASCII 字符:[\x00-\x7F]
\p{Alpha}所有字母字符:[\p{Lower}\p{Upper}]
\p{Digit}一个数字(10进制):[0-9]
\p{Alnum}字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct}标点符号(英文): !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 中的一个
\p{Graph}可见字符:[\p{Alnum}\p{Punct}]
\p{Print}可打印字符:[\p{Graph}\x20]
\p{Blank}空格或制表符:[ \t]
\p{Cntrl}控制字符:[\x00-\x1F\x7F]
\p{XDigit}十六进制数:[0-9a-fA-F]
\p{Space}空白符:[ \t\n\x0B\f\r]
java.lang.Character类表达式(简单Java字符类)
\p{javaLowerCase}等效于java.lang.Character.isLowerCase()
\p{javaUpperCase}等效于java.lang.Character.isUpperCase()
\p{javaWhitespace}等效于java.lang.Character.isWhitespace()
\p{javaMirrored}等效于java.lang.Character.isMirrored()
用于Unicode 脚本, 块, 分类和二进制属性类表达式
\p{IsLatin}拉丁文字字符(script)
\p{InGreek}希腊语块字符(block)
\p{Lu}大写字母(category)
\p{IsAlphabetic}字母字符(binary property)
\p{Sc}货币符号
\P{InGreek}除希腊语块字符的任意字符(否定).
[\p{L}&&[^\p{Lu}]]除大写字母外的任意字母(减法)
边界匹配符表达式
^一行的开始
$一行的结束
\b单词边界
\b{g}Unicode 扩展字素簇边界
\B非单词边界
\A输入的开始
\G前一个匹配的结尾
\Z输入的结束,但得有任意最终结束符
\z输入的结束
换行匹配符表达式
\R任何 Unicode 换行符序列, 等价于 \u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
Unicode 扩展字素匹配符
\X任意 Unicode 扩展字素簇
贪婪性的量化表达式
X?X, 出现0次或1次
X*X出现任意次,包括0次
X+X至少出现一次
X{n}X出现n次
X{n,}X至少出现n次
X{n,m}X至少出现n次,但不会超过m次
勉强性(Reluctant)的量化表达式
X??X, 出现0次或1次
X*?X出现任意次,包括0次
X+?X至少出现一次
X{n}?X出现n次
X{n,}?X至少出现n次
X{n,m}?X至少出现n次,但不会超过m次
所有权性(Possessive)的量化表达式
X?+X, 出现0次或1次
X*+X出现任意次,包括0次
X++X至少出现一次
X{n}+X出现n次
X{n,}+X至少出现n次
X{n,m}+X至少出现n次,但不会超过m次
逻辑操作符表达式
XYX 后跟着 Y
X|YX 或 Y
(X)将X视为捕捉组
上溯(Back)引用表达式
\n匹配第n个匹配组, n是一个数字
\k<name>与 'name' 同名的命名捕获组匹配
引述(Quotation)表达式
\没有匹配意义, 但引用后面的一个字符
\Q没有匹配意义, 但引用后面所有的字符直到出现\E
\E没有匹配意义, 但结束\Q开始的引用
特殊结构:命名捕获和空捕获表达式(non-capturing)
(?<name>X)将X视为一个命名捕获组
(?:X)将X视为一个空捕获组
(?idmsuxU-idmsuxU)没有匹配意义, 但会打开-关闭匹配标志 idmsuxU
(?idmsux-idmsux:X)将X是为一个打开-关闭了匹配标志 idmsuxU 的空捕获组
(?=X)X, 通过零宽度正向前瞻
(?!X)X, 通过零宽度负向前瞻
(?<=X)X, 通过零宽度正向前瞻
(?<!X)X, 通过零宽度负向前瞻
(?>X)X 视为一个独立的空捕获组

参考资料

Java Pattern 说明https://21yi.com/java/java.util.regex.Pattern_10247.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值