Java正则表达式字符串提取指南
在Java中,可以使用正则表达式来提取字符串中的特定部分,以下是几种常用的方法:
使用Pattern和Matcher类
import java.util.regex.*;
public class RegexExample {
public static void main(String[] args) {
String text = "我的电话是13812345678,邮箱是example@test.com";
// 提取电话号码
Pattern phonePattern = Pattern.compile("(\\d{11})");
Matcher phoneMatcher = phonePattern.matcher(text);
while (phoneMatcher.find()) {
System.out.println("找到电话号码: " + phoneMatcher.group());
}
// 提取邮箱
Pattern emailPattern = Pattern.compile("([\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,})");
Matcher emailMatcher = emailPattern.matcher(text);
while (emailMatcher.find()) {
System.out.println("找到邮箱: " + emailMatcher.group());
}
}
}
使用String的split方法分割字符串
String text = "苹果,香蕉,橙子,葡萄";
String[] fruits = text.split(",");
for (String fruit : fruits) {
System.out.println(fruit);
}
使用String的matches方法验证格式
String email = "test@example.com";
if (email.matches("^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$")) {
System.out.println("邮箱格式正确");
}
使用正则表达式提取分组
String text = "订单号:ORD123456,金额:¥99.99";
Pattern pattern = Pattern.compile("订单号:(\\w+),金额:¥(\\d+\\.\\d+)");
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
System.out.println("订单号: " + matcher.group(1));
System.out.println("金额: " + matcher.group(2));
}
使用Java 8的Stream API提取匹配项
import java.util.regex.*;
import java.util.stream.*;
String text = "产品A:100元,产品B:200元,产品C:150元";
Pattern pattern = Pattern.compile("(\\w+):(\\d+)元");
pattern.matcher(text).results()
.forEach(match -> {
System.out.println("产品: " + match.group(1) + ", 价格: " + match.group(2));
});
常用正则表达式示例
| 用途 | 正则表达式 | 示例 |
|---|---|---|
| 手机号码 | 1[3-9]\\d{9} |
13812345678 |
| 电子邮箱 | \\w+@\\w+\\.\\w+ |
user@example.com |
| 身份证号 | [1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[0-9Xx] |
110105199003072841 |
| 日期(YYYY-MM-DD) | \\d{4}-\\d{2}-\\d{2} |
2025-05-15 |
| IP地址 | \\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3} |
168.1.1 |
注意事项
- 正则表达式中的特殊字符需要转义,如、、等
- 使用
\\d匹配数字,\\w匹配字母数字和下划线 - 使用创建捕获组,可以通过
group()方法获取 - 对于复杂的正则表达式,可以使用
Pattern.compile()预编译以提高性能
希望这些示例能帮助你更好地使用Java正则表达式进行字符串提取!
