Pattern p = Pattern.compile("\\d{3,5}");
String s="5-13521-562-1235-1";
Matcher m = p.matcher(s);
//匹配整个字符串
Dy(m.matches());
//有matches和find共同使用的时候,读取字符串之后不会再返回读取的值,通过reset恢复读取过的值
m.reset();
//find找子串当中对应的匹配模式
Dy(m.find());
//start()起始位置 end()结束位置,在使用的时候必须要能找到对应的子串,不然报错
Dy(m.start()+"-"+m.end());
Dy(m.find());
Dy(m.start()+"-"+m.end());
Dy(m.find());
Dy(m.start()+"-"+m.end());
Dy(m.find());
Dy(m.find());
//lookingAt每次都从头开始读取
Dy(m.lookingAt());
Dy(m.lookingAt());
Dy(m.lookingAt());
Dy(m.lookingAt());
/* 一、查找所有的java字符串并替换成大写JAVA
Pattern pattern = Pattern.compile("java",Pattern.CASE_INSENSITIVE);//Pattern.CASE_INSENSITIVE 不敏感大小写
Matcher matcher = pattern.matcher("Java jAva jaVa ilovejava youhateJAVA 23232sdd");
while(matcher.find()){
System.out.println(matcher.group());
}
replaceAll("JAVA")替换
Dy(matcher.replaceAll("JAVA"));*/
//二、查找字符串当中所有的java,偶数替换成JAVA,奇数替换成java;
Pattern pattern = Pattern.compile("java",Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher("51515xs Java jAva jaVa ilovejava youhateJAVA 23232sdd");
StringBuffer buffer = new StringBuffer();
int i=0;
while(matcher.find()){
i++;
if(i%2==0){
matcher.appendReplacement(buffer, "JAVA");
}else{
matcher.appendReplacement(buffer, "java");
}
}
//替换完成最后一个java后面的尾巴给去掉了通过appendTail添加尾巴
matcher.appendTail(buffer);
Dy(buffer);
//group分组,在pattern.compile()当中通过小括号分组,通过group打印需要的分组
//通过左边的小括号区分对应的分组,group默认的是整个大的分组
Pattern pattern2 = pattern.compile("(\\d{3,5})([a-z]{2})");
Matcher matcher2 = pattern2.matcher("1212ss 321sd 3124a 34563cc 22344fds");
while(matcher2.find()){
Dy(matcher2.group(2));
}
}
private static void Dy(Object o) {
System.out.println(o);
}
}
本文介绍Java中正则表达式的应用案例,包括模式匹配、替换字符串中的特定模式及复杂分组操作。通过实例展示了如何查找字符串中的数字、替换大小写的Java关键字以及分组匹配。
2164

被折叠的 条评论
为什么被折叠?



