[学习笔记] Java正则表达式
正则表达式
正则表达式定义了字符串的模式,可以用于搜索、编辑或处理文本;
正则表达式使用字符串描述规则,并用于匹配字符串;
一个正则表达式其实就是一个描述规则的字符串,被正则表达式引擎用于匹配文本;
正则表达式是一套规则,可以用于任何语言;
Java提供内置的java.util.regex包用于支持正则表达式;
若正则表达式含有特殊字符,则需要用 \ 对其进行转义,在Java当中的字符串中 \ 要用 \\来表示;
匹配规则
正则表达式按照从左到右的顺序进行匹配;
匹配任意字符
在实际应用时,正则表达式用于进行模糊匹配,精确匹配由String.equals()就可以完成;
正则表达式语法
单个字符匹配规则
正则表达式 | 匹配字符 |
单个字符,如A | 匹配指定字符,如A |
\u#### | 匹配指定的Unicode字符 |
. | 匹配除\r和\n之外的任意一个字符 |
\d | 匹配任意一个数字,0-9 |
\w | 匹配任意一个字母、数字或下划线 |
\s | 匹配空格或Tab键 |
\D | 匹配非数字 |
\W | 匹配非\w |
\S | 匹配非空格或Tab键(\t) |
\f | 匹配换页符 |
\n | 匹配换行符 |
\r | 匹配回车符 |
\t | 匹配垂直制表符 |
匹配多个字符
正则表达式 | 匹配字符 |
A* | 匹配任意个数的字符 |
A+ | 至少匹配一个字符 |
A? | 匹配0个或1个字符 |
A{n} | 匹配指定的n个字符 |
A{m,n} | 匹配指定范围内个数的字符 |
A{n,} | 至少匹配n个字符 |
复杂的匹配规则
在其他语言中,要在正则表达式中插入一个反斜杠 \, 只需要用 \ 表示即可,而在Java中,需要两个反斜杠 \\ 才能表示一个反斜杠 \;
根据Java语言规范,Java源代码的字符串中的反斜杠被解释为Unicode转义或其他字符转义,因此必须在字符串字面值中使用两个反斜杠,表示正则表达式受到保护,不被Java编译器解释;
正则表达式 | 匹配字符 |
\ | 用于转义字符,将下一个字符标记为特殊字符、文本等 |
^ | 用正则表达式进行多行匹配时,^ 表示字符串开始的位置 |
$ | 用正则表达式进行多行匹配时, $ 表示字符串结束的位置 |
? | 在正则表达式的规则后加上?表示采用非贪婪匹配模式(相比于默认的贪婪匹配模式尽可能长的匹配字符串,非贪婪模式会尽可能短的匹配字符串) |
A|B | 用|连接两个正则表达式,表示A或B |
[ABC] | 将所有符合条件的字符都列在方括号内组成一个字符集,匹配任何一个在字符集当中的字符,即匹配A或B或C |
[^ABC] | 将^放在字符集的开头表示一个反向字符集,即匹配A或B或C以外的字符 |
[a-z] | 由于在字符集当中列出所有要匹配的字符比较麻烦,可以使用字符范围的形式来对字符集进行简化 |
[^a-z] | 为了简化反字符集,也可以使用指定范围字符 |
分组匹配
在正则表达式中,可以使用括号(pattern)将子规则括起来表示匹配pattern及其子表达式;
括号还可以用于进行分组匹配,把要匹配的规则用括号进行分组可以方便后续对子字符串的提取;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?