正则表达式(Regular Expression)是一种强大的文本处理工具,使用特定语法模式来描述、匹配和操作字符串。在Java中通过java.util.regex包提供正则表达式支持。
. - 匹配任意单个字符(除换行符)\d - 匹配数字字符,等价于[0-9]\D - 匹配非数字字符\w - 匹配单词字符(字母、数字、下划线)\W - 匹配非单词字符\s - 匹配空白字符\S - 匹配非空白字符[abc] - 匹配a、b或c中的任意一个字符[^abc] - 匹配除a、b、c外的任意字符[a-zA-Z] - 匹配任意字母字符* - 匹配0次或多次+ - 匹配1次或多次? - 匹配0次或1次{n} - 匹配恰好n次{n,} - 匹配至少n次{n,m} - 匹配n到m次^ - 匹配字符串开始$ - 匹配字符串结束\b - 匹配单词边界\B - 匹配非单词边界import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class RegexExample {
public static void main(String[] args) {
String text = "Hello Java Regex 2023";
String patternString = "\\d+"; // 匹配数字
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("找到数字: " + matcher.group());
}
}
}
matches(String regex) - 判断字符串是否匹配正则表达式split(String regex) - 根据正则表达式分割字符串replaceAll(String regex, String replacement) - 替换所有匹配项replaceFirst(String regex, String replacement) - 替换第一个匹配项String emailRegex = "^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$";
String phoneRegex = "^1[3-9]\\d{9}$";
String idCardRegex = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[0-9Xx]$";
String text = "John:30,Alice:25";
Pattern pattern = Pattern.compile("(\\w+):(\\d+)");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("姓名: " + matcher.group(1) + ", 年龄: " + matcher.group(2));
}
// 使用(?:pattern)进行非捕获分组
String regex = "(?:http|https)://([^/]+)/";
(?=pattern) - 正向前瞻(?!pattern) - 负向前瞻(?<=pattern) - 正向后顾(? - 负向后顾A: 使用反斜杠\\进行转义,例如\\.匹配实际的点字符。
A: 默认区分大小写,可以使用(?i)标志开启不区分大小写模式。
A: 使用(?m)标志或Pattern.MULTILINE模式。
通过掌握Java正则表达式,您可以高效地处理各种字符串匹配、验证和替换需求,大大提升开发效率。