java如何用正则
正则表达式在Java中的基本使用
Java通过java.util.regex包提供正则表达式支持,核心类包括Pattern和Matcher。以下是基本用法:
定义正则表达式
String regex = "a*b"; // 匹配0个或多个a后接b
Pattern pattern = Pattern.compile(regex);
匹配字符串
Matcher matcher = pattern.matcher("aaab");
boolean matches = matcher.matches(); // 返回true
常用正则方法
字符串直接匹配
String input = "123abc";
boolean isMatch = input.matches("\\d+[a-z]+"); // 匹配数字+字母
查找多个匹配项
Matcher matcher = Pattern.compile("\\w+").matcher("Hello World");
while (matcher.find()) {
System.out.println(matcher.group()); // 输出"Hello"和"World"
}
分组与捕获
提取分组内容

Matcher m = Pattern.compile("(\\d{3})-(\\d{4})").matcher("123-4567");
if (m.matches()) {
String areaCode = m.group(1); // "123"
String localNum = m.group(2); // "4567"
}
命名分组(Java 7+)
Pattern p = Pattern.compile("(?<area>\\d{3})-(?<local>\\d{4})");
Matcher m = p.matcher("123-4567");
if (m.find()) {
System.out.println(m.group("area")); // 输出"123"
}
替换操作
简单替换
String result = "a1b2c3".replaceAll("\\d", "X"); // "aXbXcX"
动态替换

String output = "John Doe".replaceAll("(\\w+) (\\w+)", "$2, $1"); // "Doe, John"
常用正则模式示例
验证邮箱格式
boolean isValidEmail = "user@example.com".matches("[\\w.-]+@[\\w.-]+\\.[a-z]{2,}");
提取HTML标签内容
Pattern tagPattern = Pattern.compile("<title>(.+?)</title>");
Matcher tagMatcher = tagPattern.matcher("<title>Example</title>");
if (tagMatcher.find()) {
System.out.println(tagMatcher.group(1)); // 输出"Example"
}
性能优化建议
预编译常用正则表达式:
private static final Pattern DATE_PATTERN = Pattern.compile("\\d{4}-\\d{2}-\\d{2}");
避免贪婪匹配导致的性能问题:
// 使用非贪婪量词
Pattern.compile("<div>.+?</div>"); // 而非".+"






