杰瑞科技汇

Java正则如何精准提取字符串?

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

注意事项

  1. 正则表达式中的特殊字符需要转义,如、、等
  2. 使用\\d匹配数字,\\w匹配字母数字和下划线
  3. 使用创建捕获组,可以通过group()方法获取
  4. 对于复杂的正则表达式,可以使用Pattern.compile()预编译以提高性能

希望这些示例能帮助你更好地使用Java正则表达式进行字符串提取!

分享:
扫描分享到社交APP
上一篇
下一篇