Java正则匹配符号

正则表达式是一种强大的模式匹配工具,可以用于在字符串中查找、替换和提取特定的内容。Java提供了丰富的正则匹配符号,可以满足不同场景下的需求。本文将介绍Java中常用的正则匹配符号,并通过代码示例演示其用法。

1. 常用的正则匹配符号

1.1 字符匹配符号

  • .:匹配除换行符以外的任意字符。
  • \w:匹配任意字母、数字或下划线。
  • \d:匹配任意数字。
  • \s:匹配任意空白字符,包括空格、制表符、换行符等。
  • []:匹配方括号中的任意一个字符。

1.2 重复匹配符号

  • *:匹配前面的字符零次或多次。
  • +:匹配前面的字符一次或多次。
  • ?:匹配前面的字符零次或一次。
  • {n}:匹配前面的字符恰好n次。
  • {n,}:匹配前面的字符至少n次。
  • {n,m}:匹配前面的字符至少n次,最多m次。

1.3 边界匹配符号

  • ^:匹配行的开头。
  • $:匹配行的结尾。
  • \b:匹配单词的边界。

1.4 分组匹配符号

  • ():将括号内的内容作为一个子表达式。
  • |:匹配两个或多个表达式之一。

2. Java中的正则匹配

在Java中,可以使用java.util.regex包中的PatternMatcher类来进行正则匹配。

import java.util.regex.*;

public class RegexDemo {
    public static void main(String[] args) {
        String input = "Hello, World!";
        String pattern = "Hello.*";
        
        // 创建Pattern对象
        Pattern p = Pattern.compile(pattern);
        
        // 创建Matcher对象
        Matcher m = p.matcher(input);
        
        // 进行匹配
        if (m.matches()) {
            System.out.println("匹配成功");
        } else {
            System.out.println("匹配失败");
        }
    }
}

运行以上代码,输出结果为匹配成功。代码中使用了Pattern.compile()方法编译正则表达式,并使用Matcher.matches()方法进行匹配。

3. 正则匹配的常见应用场景

3.1 邮箱格式验证

正则表达式可以很方便地验证邮箱的格式是否符合要求。

import java.util.regex.*;

public class EmailValidator {
    public static boolean validate(String email) {
        String pattern = "^[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{2,})+$";
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(email);
        return m.matches();
    }
    
    public static void main(String[] args) {
        String email = "example@example.com";
        if (validate(email)) {
            System.out.println("邮箱格式正确");
        } else {
            System.out.println("邮箱格式错误");
        }
    }
}

3.2 提取URL中的域名

可以使用正则表达式从URL中提取域名部分。

import java.util.regex.*;

public class DomainExtractor {
    public static String extract(String url) {
        String pattern = "(https?://)?([\\w\\.]+)[/:]";
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(url);
        if (m.find()) {
            return m.group(2);
        } else {
            return "";
        }
    }
    
    public static void main(String[] args) {
        String url = "
        String domain = extract(url);
        System.out.println("域名:" + domain);
    }
}

3.3 替换敏感词

使用正则表达式可以方便地替换文本中的敏感词。

import java.util.regex.*;

public class WordFilter {
    public static String filter(String text) {
        String pattern = "(?i)敏感