【java正则表达式语法大全】在Java编程中,正则表达式(Regular Expression)是一种强大的工具,用于匹配、查找、替换和操作字符串。掌握正则表达式的语法对于处理文本数据、验证输入格式等任务非常关键。以下是对Java正则表达式常用语法的总结,并以表格形式进行展示。
一、Java正则表达式基础语法
符号 | 含义 | 示例 | ||
`.` | 匹配任意单个字符(除了换行符) | `a.c` 可匹配 "abc", "aac" | ||
`^` | 匹配字符串的开始位置 | `^hello` 匹配以 "hello" 开头的字符串 | ||
`$` | 匹配字符串的结束位置 | `world$` 匹配以 "world" 结尾的字符串 | ||
`` | 匹配前面的元素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" 外的字符 | ||
` | ` | 或操作符,匹配多个模式之一 | `cat | dog` 匹配 "cat" 或 "dog" |
`()` | 分组,用于捕获子表达式或限定运算顺序 | `(ab)+` 匹配 "ab", "abab", 等 |
二、Java中常用的正则表达式方法
方法 | 功能 | 示例 |
`String.matches()` | 判断整个字符串是否匹配给定的正则表达式 | `"123".matches("\\d+")` 返回 `true` |
`String.split()` | 根据正则表达式分割字符串 | `"a,b,c".split(",")` 返回 `["a", "b", "c"]` |
`Pattern` 和 `Matcher` 类 | 更灵活地使用正则表达式,支持查找、替换等 | `Pattern.compile("java").matcher("java is fun").find()` 返回 `true` |
`String.replaceAll()` | 替换所有匹配的子串 | `"hello world".replaceAll("o", "0")` 返回 `"hell0 w0rld"` |
`String.replaceFirst()` | 替换第一个匹配的子串 | `"hello hello".replaceFirst("hello", "hi")` 返回 `"hi hello"` |
三、常见字符类与预定义字符
表达式 | 含义 | 示例 |
`\d` | 匹配任意数字(0-9) | `\d+` 匹配 "123", "456" |
`\D` | 匹配任意非数字字符 | `\D+` 匹配 "abc", "xyz" |
`\s` | 匹配任意空白字符(空格、制表符、换行等) | `\s+` 匹配多个空格 |
`\S` | 匹配任意非空白字符 | `\S+` 匹配 "abc123" |
`\w` | 匹配字母、数字或下划线(即 [a-zA-Z0-9_]) | `\w+` 匹配 "username123" |
`\W` | 匹配非字母、数字或下划线的字符 | `\W+` 匹配 " @! " |
`\b` | 单词边界(匹配单词与非单词之间的位置) | `\bjava\b` 匹配独立的 "java" |
`\B` | 非单词边界 | `\Bjava\B` 匹配出现在单词中间的 "java" |
四、转义字符与特殊字符
在正则表达式中,某些字符具有特殊含义,如 `.`、``、`+` 等。如果需要匹配这些字符本身,需使用反斜杠 `\` 进行转义。例如:
- 要匹配点号 `.`,应写成 `\.`;
- 要匹配星号 ``,应写成 `\`;
- 在Java字符串中,反斜杠本身也需要转义,因此实际写法为 `\\.` 或 `\\`。
五、Java正则表达式示例
正则表达式 | 说明 | 示例匹配 |
`\d{3}-\d{3}-\d{4}` | 匹配电话号码格式(如 123-456-7890) | "123-456-7890" |
`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` | 匹配电子邮件地址 | "example@domain.com" |
`^(?=.[A-Za-z])(?=.\d)[A-Za-z\d]{8,}$` | 匹配至少8位、包含字母和数字的密码 | "Password123" |
`https?://[^\s]+` | 匹配URL地址 | "http://example.com", "https://google.com" |
六、总结
Java正则表达式是处理字符串的强大工具,能够实现复杂的模式匹配和文本操作。掌握其基本语法和常用方法,有助于提高程序的灵活性和可维护性。在实际开发中,合理使用正则表达式可以简化代码逻辑,提升效率。通过不断练习和应用,可以更熟练地运用这一功能。