正则表达式(JAVA)

Java 的正则表达式使用 java.util.regex 包中的类。主要类是 PatternMatcherPattern 对象表示一个编译后的正则表达式,Matcher 对象则用于对输入字符串进行匹配。

以下是一些常用的 Java 正则表达式示例和讲解:

1. 创建 Pattern 对象:

首先,你需要创建一个 Pattern 对象,它将你的正则表达式编译成一个可用于匹配的模式。

String regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"; // 简单的邮箱正则表达式
Pattern pattern = Pattern.compile(regex);

Pattern.compile(regex) 方法将正则表达式字符串编译成 Pattern 对象。 regex 字符串包含你的正则表达式。 这个例子是一个简单的邮箱验证正则表达式。

2. 创建 Matcher 对象:

接下来,你需要创建一个 Matcher 对象,它将 Pattern 对象与目标字符串进行匹配。

String input = "test@example.com";
Matcher matcher = pattern.matcher(input);

pattern.matcher(input) 方法创建一个 Matcher 对象,它将 pattern 应用于 input 字符串。

3. 执行匹配:

Matcher 类提供了多种方法来执行匹配:

  • matcher.matches(): 检查整个字符串是否与正则表达式完全匹配。 返回布尔值。
  • matcher.find(): 查找字符串中与正则表达式匹配的下一个子字符串。 返回布尔值。 你可以多次调用 find() 来找到所有匹配项。
  • matcher.lookingAt(): 检查字符串的开头是否与正则表达式匹配。 返回布尔值。
  • matcher.group(): 获取匹配的子字符串。 第一次调用返回整个匹配,后续调用返回捕获组 (capturing group) 的内容。
  • matcher.groupCount(): 返回捕获组的数量。
  • matcher.start(): 返回匹配子串在输入字符串中的起始索引。
  • matcher.end(): 返回匹配子串在输入字符串中的结束索引 (不包括结束字符)。

示例:验证邮箱地址

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

public class RegexExample {
    public static void main(String[] args) {
        String regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
        Pattern pattern = Pattern.compile(regex);

        String[] emails = {"test@example.com", "invalid-email", "another.test@subdomain.example.co.uk", "wrong@format."};

        for (String email : emails) {
            Matcher matcher = pattern.matcher(email);
            if (matcher.matches()) {
                System.out.println(email + " is a valid email address.");
            } else {
                System.out.println(email + " is not a valid email address.");
            }
        }
    }
}

元字符 (Metacharacters):

  • ^: 匹配字符串的开头。
  • $: 匹配字符串的结尾。
  • . : 匹配除换行符以外的任何字符。
  • *: 匹配前面的字符零次或多次。
  • +: 匹配前面的字符一次或多次。
  • ?: 匹配前面的字符零次或一次。
  • []: 定义字符集合。
  • [^...]: 定义否定字符集合。
  • |: 或操作符
  • (): 定义捕获组 (capturing group)
  • \\: 转义特殊字符。

字符类 (Character Classes):

  • \d: 匹配数字 [0-9]
  • \D: 匹配非数字 [^0-9]
  • \s: 匹配空白字符 (空格、制表符、换行符等)
  • \S: 匹配非空白字符
  • \w: 匹配单词字符 [a-zA-Z0-9_]
  • \W: 匹配非单词字符

需要深入学习 PatternMatcher 类的更多方法和特性。

正则表达式的应用

字符串分割:使用String.split方法。

字符串替换:使用String.replaceAll方法。

查找特定模式:使用Pattern和Matcher。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值