在Java中,Matcher类用于在给定输入字符串中进行正则表达式匹配,并且可以使用分组功能来捕获匹配的部分。下面是一个简单的示例来展示如何使用Matcher的分组功能:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "Hello, my email is john.doe@example.com";
Pattern pattern = Pattern.compile("([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)\\.([a-zA-Z]{2,6})");
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
String email = matcher.group(0); // 整个匹配的字符串
String username = matcher.group(1); // 第一个分组 - 用户名部分
String domain = matcher.group(2); // 第二个分组 - 域名部分
String tld = matcher.group(3); // 第三个分组 - 顶级域名部分
System.out.println("Email: " + email);
System.out.println("Username: " + username);
System.out.println("Domain: " + domain);
System.out.println("Top-Level Domain: " + tld);
}
}
}
在上面的示例中,我们首先编译了一个正则表达式模式,该模式用于匹配一个简单的电子邮件地址。然后,我们使用Matcher类的group()方法来捕获匹配的不同组件。在这个例子中,我们使用了三个分组来捕获电子邮件地址的用户名、域名和顶级域名部分。
当我们运行这段代码时,输出将打印出匹配的电子邮件地址及其各个部分:
Email: john.doe@example.com
Username: john.doe
Domain: example
Top-Level Domain: com