为了找到符合匹配的子字符串,一定要先用find()方法,然后再用group()方法才能找到符合
匹配规则的子字符串,否则直接使用group()方法会报错,不能找到符合的结果
package hb.pattern; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.Before; import org.junit.Test; public class PatternDemo { private String reg=""; private String target=""; private String source=""; @Before public void init(){ this.reg="aa*b"; this.target="变量"; this.source="aaaaaaaabbbbbaaaaab"; } /** * 使用初始化的数据进行正则表达式匹配 */ @Test public void stringPattern(){ Pattern p = Pattern.compile(reg); Matcher m = p.matcher(source); m.find(); String temp = m.group(); String result = this.source.replace(temp,this.target); System.out.println(result); } /** * 判断字符串中是否存在符合正则表达式规则的子字符串 */ @Test public void esay(){ Pattern p = Pattern.compile("aa*b"); Matcher m = p.matcher("aaaaaaaabbbbb"); boolean b = m.matches(); System.out.println(b); } /** * 将匹配的第一个字符串替换掉 */ @Test public void repalceFirsttest(){ Pattern p = Pattern.compile("aa*b"); Matcher m = p.matcher("aaaaaaaabbbbbaaaaab"); String result = m.replaceFirst(this.target); System.out.println(result); } /** * 将匹配的所有字符串全部替换掉 */ @Test public void repalceAlltest(){ Pattern p = Pattern.compile("aa*b"); Matcher m = p.matcher("aaaaaaaabbbbbaaaaab"); String result = m.replaceAll(this.target); System.out.println(result); } /** * 找到一次符合正则表达式条件的就打印出结果,不再进行 */ @Test public void group(){ Pattern p = Pattern.compile("aa*b"); Matcher m = p.matcher("aaaaaaaabbbbbaaaaab"); m.find(); String result = m.group(); System.out.println(result); } /** * 查找出所有符合条件的子字符串 */ @Test public void groupHigh(){ Pattern p = Pattern.compile("aa*b"); Matcher m = p.matcher("aaaaaaaabbbbbaaaaab"); while(m.find()){ String result = m.group(); System.out.println(result); } } /** * 匹配不到符合条件的字符串 */ @Test public void groupException(){ try{ Pattern p = Pattern.compile("aa*b"); Matcher m = p.matcher("a"); m.find(); String result = m.group();//异常是在这句话中产生的 System.out.println(result); }catch(Exception e){ e.printstacktrace(); } } /** * 找到第一个符合条件的子字符串的起始位置和最后位置 */ @Test public void startAndEnd(){ Pattern p = Pattern.compile("aa*b"); Matcher m = p.matcher("aaaaaaaabbbbbaaaaab"); m.find(); int start = m.start(); int end = m.end(); System.out.println("start : "+start); System.out.println("end : " + end); } /** * 找到第一个符合条件的子字符串的起始位置和最后位置 */ @Test public void allStartAndEnd(){ Pattern p = Pattern.compile("aa*b"); Matcher m = p.matcher("aaaaaaaabbbbbaaaaab"); while(m.find()){ int start = m.start(); int end = m.end(); System.out.println("start : "+start); System.out.println("end : " + end); } } /** * 找到符合第二个分组规则的第一个子字符串 */ @Test public void groups(){ Pattern p = Pattern.compile("(a)(aa*b)"); Matcher m = p.matcher("aaaaaaaabbbbbaaaaab"); m.find(); String result = m.group(2); System.out.println(result); } /** * 找到符合第二个分组规则的所有子字符串 */ @Test public void allGroups(){ Pattern p = Pattern.compile("(a)(aa*b)"); Matcher m = p.matcher("aaaaaaaabbbbbaaaaab"); while(m.find()){ String result = m.group(2); System.out.println(result); } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。