【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正则表达式是处理字符串的强大工具,掌握其基本语法可以大大提高开发效率。本文对常用符号、字符类、分组、转义字符以及实际应用进行了总结,并提供了简单的代码示例。在实际开发中,建议结合具体需求灵活使用正则表达式,同时注意避免过度复杂的模式导致性能问题。