有没有可以在线做化学实验的网站,免费咨询律师网站,什么网站源码做分类信息网站好,购物网站开发内容一、正则表达式能干什么#xff1f;
✅ 验证格式#xff1a;手机号、邮箱、日期✅ 提取数据#xff1a;从日志/文本中抓取关键信息✅ 替换文本#xff1a;批量修改字符串内容 二、Java正则核心API
Java中用 java.util.regex 包的两个类#xff1a;
Pattern#xff1a;…一、正则表达式能干什么
✅ 验证格式手机号、邮箱、日期✅ 提取数据从日志/文本中抓取关键信息✅ 替换文本批量修改字符串内容 二、Java正则核心API
Java中用 java.util.regex 包的两个类
Pattern编译正则表达式Matcher执行匹配操作
// 快速匹配示例
String regex \\d; // 匹配数字
boolean isMatch Pattern.matches(regex, 123); // true// 提取数据示例
Pattern pattern Pattern.compile(\\d);
Matcher matcher pattern.matcher(价格99元库存5);
while(matcher.find()) {System.out.println(matcher.group()); // 输出 99 和 5
}三、5个必会语法附Java代码
1. 基础匹配
符号说明Java示例匹配结果\d数字a\\da1, a9\w字母数字下划线\\whello, user1.任意字符a.cabc, ac^开头^JavaJava真好用$结尾end$这是end
2. 量词控制次数
符号说明示例匹配内容?0或1次a?“”, a1次或多次\\d1, 123*0次或多次a*“”, aaaa{n}精确n次\\d{4}2023
3. 字符集合
// 匹配元音字母
Pattern.compile([aeiou]); // 匹配 a, e, i 等
// 匹配非数字
Pattern.compile([^0-9]); // 匹配 a, , # 等4. 分组提取
String text 电话188-1234-5678;
Pattern pattern Pattern.compile((\\d{3})-(\\d{4})-(\\d{4}));
Matcher matcher pattern.matcher(text);
if(matcher.find()) {System.out.println(matcher.group(1)); // 188System.out.println(matcher.group(2)); // 1234System.out.println(matcher.group(3)); // 5678
}5. 贪婪 vs 非贪婪
// 贪婪模式默认
Pattern.compile(a.*b).matcher(aXXXbYYYb).find(); // 匹配整个字符串// 非贪婪模式加?
Pattern.compile(a.*?b).matcher(aXXXbYYYb).find(); // 只匹配aXXXb四、高频实战案例
1. 验证手机号
String regex 1[3-9]\\d{9};
boolean isValid 18812345678.matches(regex); // true2. 提取邮箱
String text 联系我admintest.com 或 userqq.com;
Pattern pattern Pattern.compile(\\w\\w\\.\\w);
Matcher matcher pattern.matcher(text);
while(matcher.find()) {System.out.println(matcher.group()); // 输出两个邮箱
}3. 替换敏感信息
String phone 手机号18812345678;
String masked phone.replaceAll((\\d{3})\\d{4}(\\d{4}), $1****$2);
// 结果手机号188****5678五、避坑指南Java专属 转义问题Java中 \ 要写两次 // 错误写法Pattern.compile(\d);
// 正确写法
Pattern.compile(\\d);性能优化复用 Pattern 对象 // 不要每次编译低效
for(...) {Pattern.matches(regex, text);
}// 正确做法
Pattern pattern Pattern.compile(regex);
for(...) {pattern.matcher(text).matches();
}边界检查用 ^ 和 $ 严格匹配 // 可能意外匹配子串
123abc.matches(\\d); // false正确
123.matches(\\d); // true// 错误示例没有用^$导致误匹配
a1b2.matches(\\d); // false正确总结正则表达式就是用符号描述字符串规则多写多练才能掌握遇到复杂需求时先拆解再组合Java的 Pattern 和 Matcher 能帮你轻松应对文本处理需求
// 快速测试你的正则复制到main方法试试
String regex 你的正则;
String text 测试文本;
System.out.println(text.matches(regex));