为了找到符合匹配的子字符串,一定要先用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); } } }原文链接:https://www.f2er.com/regex/362291.html