【java正则表达式语法大全】在Java中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找、替换和分割字符串。Java通过`java.util.regex`包提供了对正则表达式的支持,主要包括`Pattern`和`Matcher`两个类。以下是对Java正则表达式常用语法的总结。
一、基本语法概述
| 符号 | 含义 | 示例 | ||
| `.` | 匹配任意单个字符(除了换行符) | `a.c` 匹配 "abc", "aac" 等 | ||
| `^` | 匹配字符串的开始位置 | `^a` 匹配以 "a" 开头的字符串 | ||
| `$` | 匹配字符串的结束位置 | `c$` 匹配以 "c" 结尾的字符串 | ||
| `` | 前一个字符出现0次或多次 | `a` 匹配 "", "a", "aa", "aaa" 等 | ||
| `+` | 前一个字符出现1次或多次 | `a+` 匹配 "a", "aa", "aaa" 等 | ||
| `?` | 前一个字符出现0次或1次 | `a?` 匹配 "" 或 "a" | ||
| `{n}` | 前一个字符恰好出现n次 | `a{3}` 匹配 "aaa" | ||
| `{n,}` | 前一个字符至少出现n次 | `a{2,}` 匹配 "aa", "aaa" 等 | ||
| `{n,m}` | 前一个字符出现n到m次 | `a{2,4}` 匹配 "aa", "aaa", "aaaa" | ||
| `[]` | 匹配括号内的任意一个字符 | `[abc]` 匹配 "a"、"b" 或 "c" | ||
| `[^...]` | 匹配不在括号内的任意一个字符 | `[^abc]` 匹配非 "a"、"b"、"c" 的字符 | ||
| ` | ` | 或操作符,表示“或”的关系 | `a | b` 匹配 "a" 或 "b" |
| `()` | 分组,用于捕获或组合表达式 | `(ab)+` 匹配 "ab", "abab", "ababab" 等 |
二、字符类与预定义字符
| 字符类 | 含义 | 示例 |
| `\d` | 匹配任意数字(0-9) | `\d+` 匹配数字序列 |
| `\D` | 匹配任意非数字字符 | `\D+` 匹配非数字字符 |
| `\s` | 匹配任意空白字符(空格、制表符、换行等) | `\s+` 匹配多个空格 |
| `\S` | 匹配任意非空白字符 | `\S+` 匹配非空格内容 |
| `\w` | 匹配字母、数字和下划线(即[a-zA-Z0-9_]) | `\w+` 匹配单词 |
| `\W` | 匹配非字母、数字和下划线的字符 | `\W+` 匹配非单词字符 |
三、边界与逻辑操作符
| 操作符 | 含义 | 示例 |
| `\b` | 单词边界(如字母与非字母之间) | `\bcat\b` 匹配独立的 "cat" |
| `\B` | 非单词边界 | `\Bcat\B` 匹配 "category" 中的 "cat" |
| `(?=...)` | 正向先行断言(匹配后面的内容) | `x(?=y)` 匹配后面是 y 的 x |
| `(?!...)` | 负向先行断言(不匹配后面的内容) | `x(?!y)` 匹配后面不是 y 的 x |
| `(?<=...)` | 正向后发断言(前面必须匹配) | `(?<=x)y` 匹配前面是 x 的 y |
| `(? | 负向后发断言(前面不能匹配) | `(? |
四、转义字符
在Java中,正则表达式中的某些特殊字符需要使用反斜杠 `\` 进行转义,例如:
- `\\d` 表示数字
- `\\s` 表示空格
- `\\.` 表示点号(`.`)
- `\\` 表示星号(``)
注意:在Java字符串中,每个反斜杠需要写成两个反斜杠 `\\`,例如 `"\\d"` 表示一个 `\d`。
五、常用方法
| 方法 | 功能 | 示例 |
| `Pattern.compile()` | 将正则表达式编译为模式对象 | `Pattern p = Pattern.compile("a+b");` |
| `Matcher.matches()` | 判断整个字符串是否匹配正则表达式 | `matcher.matches()` |
| `Matcher.find()` | 查找下一个匹配项 | `matcher.find()` |
| `Matcher.group()` | 获取匹配的子串 | `matcher.group()` |
| `String.split()` | 根据正则表达式分割字符串 | `"a,b,c".split(",")` |
六、实际应用示例
| 场景 | 正则表达式 | 说明 |
| 匹配邮箱地址 | `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` | 验证电子邮件格式 |
| 匹配手机号码(中国) | `^1[3-9]\d{9}$` | 匹配11位手机号 |
| 匹配IP地址 | `^(\\d{1,3}\\.){3}\\d{1,3}$` | 简单匹配IPv4地址 |
| 匹配URL | `^(https?:\\/\\/)?([\\w-]+\\.)+[\\w-]+(\/[\\w-])$` | 匹配简单URL结构 |
总结
Java正则表达式功能强大,能够满足大部分字符串处理需求。掌握其基本语法和常用方法,可以帮助开发者高效地进行文本匹配、替换和验证操作。在实际开发中,合理使用正则表达式可以大大提升代码的灵活性和可维护性。


