当前位置:首页 > Java > 正文

Java语言匹配教程(从零开始掌握正则表达式与字符串匹配)

在Java开发中,经常需要对字符串进行查找、替换或验证操作,比如验证邮箱格式、提取手机号、判断是否为数字等。这时候,Java正则表达式就派上用场了。本教程将带你从零开始,轻松掌握Java中的字符串匹配技术,即使你是编程小白也能看懂!

Java语言匹配教程(从零开始掌握正则表达式与字符串匹配) Java正则表达式 Java字符串匹配 Pattern类 Matcher类 第1张

什么是正则表达式?

正则表达式(Regular Expression,简称 regex)是一种用于描述字符串模式的规则。通过这些规则,我们可以快速判断一个字符串是否符合特定格式,或者从中提取所需信息。

Java中如何使用正则表达式?

Java 提供了两个核心类来处理正则表达式:java.util.regex.Patternjava.util.regex.Matcher。其中:

  • Pattern类:用于编译正则表达式,生成一个模式对象。
  • Matcher类:用于将该模式与目标字符串进行匹配操作。

基础示例:判断字符串是否为数字

下面是一个简单的例子,判断一个字符串是否只包含数字:

import java.util.regex.Pattern;public class RegexExample {    public static void main(String[] args) {        String input = "12345";        // 定义正则表达式:\d+ 表示一个或多个数字        String regex = "\\d+";                // 编译正则表达式        Pattern pattern = Pattern.compile(regex);                // 判断是否完全匹配        boolean isMatch = pattern.matcher(input).matches();                System.out.println("输入是数字吗?" + isMatch); // 输出:true    }}

注意:在Java字符串中,反斜杠 \ 是转义字符,所以写 \d 要写成 \\d

常用正则表达式符号

符号 含义
. 匹配任意单个字符(除换行符)
\d 匹配数字 [0-9]
\w 匹配字母、数字或下划线
+ 前面的元素出现一次或多次
* 前面的元素出现零次或多次
? 前面的元素出现零次或一次

实战:验证邮箱格式

下面使用 Java字符串匹配 技术验证一个常见的邮箱格式:

import java.util.regex.Pattern;public class EmailValidator {    public static void main(String[] args) {        String email = "example@domain.com";        // 简化的邮箱正则表达式        String emailRegex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";                boolean isValid = Pattern.matches(emailRegex, email);        System.out.println("邮箱格式是否有效?" + isValid); // 输出:true    }}

这里我们直接使用了 Pattern.matches() 静态方法,它内部会自动创建 PatternMatcher 对象,适合一次性匹配场景。

进阶:使用 Matcher 类提取匹配内容

如果你想从一段文本中提取所有手机号,就需要用到 Matcherfind() 方法:

import java.util.regex.Matcher;import java.util.regex.Pattern;public class PhoneExtractor {    public static void main(String[] args) {        String text = "请联系我:13812345678 或 15987654321,谢谢!";        String phoneRegex = "1[3-9]\\d{9}"; // 匹配中国大陆手机号                Pattern pattern = Pattern.compile(phoneRegex);        Matcher matcher = pattern.matcher(text);                while (matcher.find()) {            System.out.println("找到手机号:" + matcher.group());        }        // 输出:        // 找到手机号:13812345678        // 找到手机号:15987654321    }}

总结

通过本教程,你已经掌握了 Java正则表达式 的基本用法,了解了 Pattern类Matcher类 的核心作用,并能完成常见的 Java字符串匹配 任务。正则表达式虽然初学有点抽象,但多练习几个例子后就会变得得心应手!

提示:可以使用在线正则测试工具(如 regex101.com)先验证你的正则表达式,再写入 Java 代码中。