Java学习——正则表达式

发布于:2025-06-08 ⋅ 阅读:(18) ⋅ 点赞:(0)

在Java开发中,正则表达式(Regular Expression)是处理文本匹配、验证和提取的核心工具,主要通过java.util.regex包实现。以下是系统性解析:


🔍 ​​正则表达式的作用​

  1. ​文本验证​
    • 验证格式规范:邮箱、手机号、身份证号等(如1[3-9]\d{9}匹配手机号)
  2. ​文本搜索与提取​
    • 从日志、文档中提取特定模式的数据(如提取URL或日期)
  3. ​文本替换与清洗​
    • 批量替换敏感词、格式化文本(如replaceAll("\\s+", " ")合并多余空格)
  4. ​字符串分割​
    • 按复杂规则切分字符串(如split("\\|")按竖线分割)

⚙️ ​​Java中常用正则表达式​

​类别​ ​示例​ ​说明​
​基础匹配​ "a.b" 匹配"a"后接任意字符+"b"
​数字匹配​ "\\d+" 匹配连续数字(如"123")
​字符集​ "[aeiou]" 匹配任意元音字母
​边界控制​ "^Java" 匹配以"Java"开头的字符串
​分组捕获​ "(\\d{3})-(\\d{4})" 提取区号和号码(如"020-1234")

📌 特殊字符需转义:如.需写为\\.\需写为\\\\


🛠️ ​​Java正则表达式使用步骤​

  1. ​编译正则模式​
    使用Pattern.compile()将字符串编译为可重用对象:

    Pattern pattern = Pattern.compile("\\d{3}");  // 匹配3位数字
  2. ​创建匹配器​
    绑定目标文本与模式:

    Matcher matcher = pattern.matcher("ID: 123, Code: 456");
  3. ​执行匹配操作​

    • matcher.matches():全文本匹配
    • matcher.find():迭代查找子串
    • matcher.group():获取匹配结果
    while (matcher.find()) {
        System.out.println("找到数字: " + matcher.group()); // 输出123, 456
    }

📧 ​​匹配Email的正则表达式及代码​

标准表达式(兼容多数格式):
^[\w+.-]+@[\w.-]+\.[a-zA-Z]{2,}$
  • ​分解说明​​:
    • ^[\w+.-]+:本地部分(允许字母、数字、.-_
    • @:分隔符
    • [\w.-]+:域名(如gmailyahoo
    • \.[a-zA-Z]{2,}:顶级域名(如.com.org,至少2位)
Java完整示例:
import java.util.regex.*;

public class EmailValidator {
    public static void main(String[] args) {
        String emailRegex = "^[\\w+.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$";
        String email = "user.name+2024@example.com";
        
        Pattern pattern = Pattern.compile(emailRegex);
        Matcher matcher = pattern.matcher(email);
        
        if (matcher.matches()) {
            System.out.println("✅ 邮箱有效");
        } else {
            System.out.println("❌ 邮箱无效");
        }
    }
}

⚠️ ​​注意​​:RFC标准复杂,此表达式覆盖常见格式但非100%完整。


💡 ​​进阶技巧​

  1. ​预编译优化​
    多次使用的正则表达式应预编译Pattern对象提升性能。
  2. ​非捕获分组​
    (?:...)替代(...)避免存储分组,减少开销。
  3. ​懒惰匹配​
    在量词后加?(如.*?)避免过度匹配。

💎 ​​总结​

正则表达式在Java中通过 ​Pattern编译​​、​Matcher操作​​实现高效文本处理,适用于验证(如邮箱)、提取(如电话号码)、替换(如数据脱敏)等场景。掌握核心语法(如