引言

正则表达式是Java编程中一个非常强大且实用的工具,它可以帮助我们高效地进行字符串的搜索、匹配、替换和提取。本文将通过一系列实战案例,帮助你掌握Java正则表达式的使用,让你轻松破解文本处理难题。

一、正则表达式基础

1.1 普通字符

普通字符包括字母、数字和标点符号,它们在正则表达式中直接代表自己本身。

String regex = "a"; // 匹配字母 'a'

1.2 元字符

元字符具有特殊的含义,它们可以用来指定更复杂的匹配模式。

String regex = "\\d"; // 匹配任意数字

1.3 量词

量词用于指定匹配元素的数量。

String regex = "\\d{3}"; // 匹配恰好三位数字

1.4 定位符

定位符用于指定匹配的位置。

String regex = "^a"; // 匹配字符串开头为字母 'a'

二、实战案例

2.1 验证邮箱地址

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

public class EmailValidator {
    public static void main(String[] args) {
        String email = "example@example.com";
        String regex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(email);

        if (matcher.matches()) {
            System.out.println("Valid email address");
        } else {
            System.out.println("Invalid email address");
        }
    }
}

2.2 提取电话号码

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

public class PhoneNumberExtractor {
    public static void main(String[] args) {
        String text = "Contact me at +1 (123) 456-7890";
        String regex = "\\+\\d\\s*\\(\\d{3}\\)\\s*\\d{3}-\\d{4}";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {
            System.out.println("Found phone number: " + matcher.group());
        }
    }
}

2.3 替换文本

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

public class TextReplacer {
    public static void main(String[] args) {
        String text = "The quick brown fox jumps over the lazy dog";
        String regex = "\\bfox\\b";
        String replacement = "cat";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);

        String replacedText = matcher.replaceAll(replacement);

        System.out.println(replacedText);
    }
}

2.4 分割字符串

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

public class StringSplitter {
    public static void main(String[] args) {
        String text = "apple,banana,orange";
        String regex = ",";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {
            System.out.println("Found: " + matcher.group());
        }
    }
}

三、总结

通过以上实战案例,我们可以看到正则表达式在Java编程中的强大功能和广泛用途。熟练掌握正则表达式,将有助于我们更高效地处理文本数据,解决各种文本处理难题。