Java基础类库-3
AI摘要:
对应《疯狂Java讲义(第5版)》7.5 章节
正则表达式
正则表达式是用于匹配字符串的模板
String类提供的方法
- boolean matches(String regax):判断字符串是否匹配指定的正则表达式
- String replaceAll(String regex, String replacement):将该字符串所有匹配regax的子串替换为replacement
- String replaceFirst(String regax, String replacement):将该字符串第一个匹配regax的子串替换为replacement
- String[] split(String regax):以regax作为分隔符,分割为多个子串
此外,Java提供了Pattern
和Matcher
两个类专门用于提供正则表达式支持
正则表达式的匹配规则
基本字符
字符 | 解释 |
---|---|
x | 字符x |
\0mnn | 八进制数 0mnn 所表示的字符 |
\xhh | 十六进制值 0xhh 所表示的字符 |
\uhhhh | 十六进制值 0xhhhh 所表示的Unicode字符 |
\t | 制表符(’\u0009’) |
\n | 新行(换行)符(’\u000A’) |
\r | 回车符(’\u000D’) |
\f | 换页符(’\u000C’) |
\a | 报警(bell)符(’\u0007’) |
\e | Escape符(’\u001B’) |
\cx | x对应的控制符。如\cM 匹配 Ctrl-M。x必须为A |
特殊字符
字符 | 说明 |
---|---|
$ | |
^ | |
( ) | |
[ ] | |
{ } | |
* | |
+ | |
? | |
. | |
\ | |
| |
预定义字符(通配符)
字符 | 说明 |
---|---|
. | 可以匹配任何字符 |
\d | 匹配 0~9 的所有数字 |
\D | 匹配非数字 |
\s | 匹配所有的空白字符,包括空格、制表符、回车符、换页符、换行符等 |
\S | 匹配所有的非空白字符 |
\w | 匹配所有的单词字符,包括 0~9 的所有数字,26个英文字母和下划线(_) |
\W | 匹配所有的非单词字符 |
方括号表达式
方括号表达式 | 说明 |
---|---|
[abc],[gz] | 枚举,表示a、b、c中任意一个字符 |
[a-f],[\u0041-\u0056] | 表示范围,可以和枚举共用,如[a-cx-z] |
[^abc],[^a-f] | 求否,非a、b、c的任意字符,非 a~f 的任意字符 |
[a-z&&[def]] | 与运算,求交集 |
[a-d[m-p]] | 并运算[a-dm-p] |
匹配所有中文字符:
[\\u0041-\\u0056]
圆括号表达式
用于将多个表达式组成一个子表达式,可以使用运算符 | ,如:
((public)|(protected)|(private))
用于匹配Java三个访问控制符之一
边界匹配符
边界匹配符 | 说明 |
---|---|
^ | 行的开头 |
$ | 行的结尾 |
\b | 单词的边界 |
\B | 非单词的边界 |
\A | 输入的开头 |
\G | 前一个匹配的结尾 |
\Z | 输入的结尾,仅用于最后的结束符 |
\z | 输入的结尾 |
三种匹配模式与数量表示符
- Greedy(贪婪模式):默认,一直匹配下去,直到无法匹配为止
- Reluctant(勉强模式):加(?)后缀,匹配最少字符
- Pocessive(占有模式):加(+)后缀,仅Java
贪婪模式 | 勉强模式 | 占用模式 | 说明 |
---|---|---|---|
X? | X?? | X?+ | X表达式出现零次或一次 |
X* | X*? | X*+ | X表达式出现零次或多次 |
X+ | X+? | X++ | X表达式出现一次或多次 |
X{n} | X{n}? | X{n}+ | X表达式出现n次 |
X{n,} | X{n,}? | X{n,}+ | X表达式出现至少n次 |
X{n,m} | X{n,m}? | X{n,m}+ | X表达式出现至少n次,至少m次 |
使用正则表达式
Java基础类库-3
https://blog.cngo.rr.nu/posts/cd69.html