Java 正则表达式详解

正则表达式(Regular Expressions, 简称 Regex)是一种用于匹配字符串中字符组合的模式。它广泛应用于文本处理、数据验证、搜索和替换等场景。在 Java 中,正则表达式是通过 java.util.regex 包来实现的,主要包括三个类:PatternMatcherPatternSyntaxException

1. 基本概念

在 Java 中,正则表达式的基本构成如下:

  • 字符:普通字符,如 ab1 等。
  • 元字符:具有特殊意义的字符,如 .(匹配任意单个字符)、*(匹配零个或多个前面的元素)、+(匹配一个或多个前面的元素)等。
  • 字符类:用方括号 [] 定义的字符集合,例如 [abc] 匹配 abc
  • 锚点:用于匹配字符串的边界,如 ^(匹配行的开始)和 $(匹配行的结束)。

2. 常用元字符

  1. .:匹配除换行符以外的任意字符。
  2. *:匹配零个或多个前面的字符。
  3. +:匹配一个或多个前面的字符。
  4. ?:匹配零个或一个前面的字符。
  5. |:表示“或”,例如 abc|def 可以匹配 abcdef
  6. {n}:匹配恰好 n 次,例如 a{3} 匹配 aaa
  7. {n,}:匹配至少 n 次,例如 a{2,} 匹配 aaaaaaaaa 等。
  8. {n,m}:匹配 n 到 m 次,例如 a{1,3} 匹配 aaaaaa

3. 编写正则表达式

在 Java 中使用正则表达式的步骤如下:

  1. 使用 Pattern 类编译正则表达式。
  2. 使用 Matcher 类对输入字符串进行匹配。
  3. 通过 Matcher 类的方法获取匹配结果。

4. 代码示例

下面是一个简单的示例,展示如何使用 Java 的正则表达式查找和替换字符串中的某些内容。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {
    public static void main(String[] args) {
        String input = "Hello, my email is example@example.com and my phone number is 123-456-7890.";

        // 匹配邮箱地址的正则表达式
        String emailRegex = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}";
        Pattern emailPattern = Pattern.compile(emailRegex);
        Matcher emailMatcher = emailPattern.matcher(input);

        System.out.println("找到的邮箱:");
        while (emailMatcher.find()) {
            System.out.println(emailMatcher.group());
        }

        // 匹配手机号码的正则表达式
        String phoneRegex = "\\d{3}-\\d{3}-\\d{4}";
        Pattern phonePattern = Pattern.compile(phoneRegex);
        Matcher phoneMatcher = phonePattern.matcher(input);

        System.out.println("\n找到的手机号码:");
        while (phoneMatcher.find()) {
            System.out.println(phoneMatcher.group());
        }

        // 替换邮箱地址
        String maskedInput = emailMatcher.replaceAll("*****");
        System.out.println("\n替换后的文本:");
        System.out.println(maskedInput);
    }
}

5. 输出结果

运行以上代码,输出将如下所示:

找到的邮箱:
example@example.com

找到的手机号码:
123-456-7890

替换后的文本:
Hello, my email is ***** and my phone number is 123-456-7890.

6. 总结

Java 的正则表达式功能强大,能够有效地进行字符串的匹配和操作。了解并掌握正则表达式,可以极大地提升字符串处理的效率。无论是简单的字符匹配还是复杂的文本处理,掌握正则表达式都将是一个有益的技能。希望本文能为你提供一个清晰的正则表达式入门框架,帮助你在实际编程中更好地应用这一强大工具。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部