插件窝 干货文章 Java正则表达式入门指南:从基础到实战

Java正则表达式入门指南:从基础到实战

Java正则表达式入门指南:从基础到实战

一、什么是正则表达式?

正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找和替换字符串中的特定模式。在Java中,通过java.util.regex包提供正则表达式支持。

二、Java正则表达式基础语法

1. 常用元字符

  • . - 匹配任意单个字符
  • \d - 匹配数字[0-9]
  • \w - 匹配单词字符[a-zA-Z0-9_]
  • \s - 匹配空白字符
  • ^ - 匹配字符串开头
  • $ - 匹配字符串结尾

2. 量词

  • * - 0次或多次
  • + - 1次或多次
  • ? - 0次或1次
  • {n} - 恰好n次
  • {n,} - 至少n次
  • {n,m} - n到m次

三、Java中使用正则表达式

1. Pattern和Matcher类

String regex = "\\d+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("123abc456");

while(matcher.find()) {
    System.out.println("找到数字: " + matcher.group());
}

2. String类中的正则方法

  • matches() - 判断字符串是否匹配正则
  • split() - 按正则分割字符串
  • replaceAll() - 正则替换

四、实战案例

1. 验证邮箱格式

String emailRegex = "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$";
boolean isValid = "example@test.com".matches(emailRegex);

2. 提取HTML中的链接

String html = "<a href=\"http://example.com\">链接</a>";
Pattern linkPattern = Pattern.compile("href=\"([^\"]*)\"");
Matcher linkMatcher = linkPattern.matcher(html);

if(linkMatcher.find()) {
    System.out.println("找到链接: " + linkMatcher.group(1));
}

五、常见问题解答

  1. Q: 为什么Java正则中要用两个反斜杠?
    A: 因为Java字符串中\\表示一个反斜杠,而正则本身也需要转义
  2. Q: 如何提高正则表达式性能?
    A: 尽量使用具体字符范围,避免过度使用.*这样的贪婪匹配

掌握Java正则表达式能极大提升文本处理效率,建议多加练习各种匹配模式。