【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" |
| `[^abc]` | 匹配除了a、b、c之外的字符 | `[^abc]` 匹配 "d", "e", "f" 等 |
| `[a-z]` | 匹配小写字母 | `[a-z]` 匹配所有小写字母 |
| `[A-Z]` | 匹配大写字母 | `[A-Z]` 匹配所有大写字母 |
| `[0-9]` | 匹配数字 | `[0-9]` 匹配所有数字 |
| `\d` | 匹配一个数字(等价于[0-9]) | `\d{3}` 匹配三位数字 |
| `\D` | 匹配一个非数字字符 | `\D+` 匹配非数字的连续字符 |
| `\s` | 匹配空白字符(空格、制表符、换行等) | `\s+` 匹配多个空白字符 |
| `\S` | 匹配非空白字符 | `\S+` 匹配非空白字符 |
| `\w` | 匹配字母、数字或下划线(等价于[a-zA-Z0-9_]) | `\w+` 匹配单词字符 |
| `\W` | 匹配非单词字符 | `\W` 匹配非字母、数字或下划线的字符 |
三、分组与捕获
| 符号 | 含义 | 示例 |
| `( )` | 分组,用于组合多个字符或表达式 | `(ab)+` 匹配 "ab", "abab", "ababab" 等 |
| `(?i)` | 忽略大小写 | `(?i)hello` 匹配 "Hello", "HELLO", "hELLo" 等 |
| `(?m)` | 多行模式,使`^`和`$`匹配每一行的开始和结束 | `(?m)^start` 匹配每行开头为 "start" 的内容 |
| `(?s)` | 单行模式,使`.`匹配包括换行符在内的所有字符 | `(?s).+` 匹配整个文本(包括换行符) |
四、特殊转义字符
| 符号 | 含义 | 示例 |
| `\t` | 制表符 | `"a\tb"` 匹配 "a\tb" |
| `\n` | 换行符 | `"a\nb"` 匹配 "a\nb" |
| `\r` | 回车符 | `"a\r\nb"` 匹配 "a\r\nb" |
| `\\` | 反斜杠 | `"a\\b"` 匹配 "a\b" |
五、常见应用场景
| 应用场景 | 正则表达式示例 |
| 验证邮箱格式 | `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` |
| 验证手机号 | `^1[3-9]\d{9}$` |
| 匹配日期(YYYY-MM-DD) | `^\d{4}-\d{2}-\d{2}$` |
| 替换所有空格 | `str.replaceAll("\\s+", "")` |
| 提取URL中的域名 | `^(https?:\\/\\/)?([^\\/]+).` |
六、Java中使用正则表达式的简单示例
```java
import java.util.regex.;
public class RegexExample {
public static void main(String[] args) {
String text = "Hello, my email is test@example.com.";
Pattern pattern = Pattern.compile("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Found: " + matcher.group());
}
}
}
```
总结
Java正则表达式是处理字符串的强大工具,掌握其基本语法可以大大提高开发效率。本文对常用符号、字符类、分组、转义字符以及实际应用进行了总结,并提供了简单的代码示例。在实际开发中,建议结合具体需求灵活使用正则表达式,同时注意避免过度复杂的模式导致性能问题。


