每天一点正则表达式积累(六)
/* 输出结果,这是没有分组的情形 123aa 34345bb 234cc*/ Pattern p = Pattern.compile("\\d{3,5}[a-z]{2}"); String s = "123aa-34345bb-234cc-00"; Matcher m = p.matcher(s); while (m.find()) { p(m.group()); } // p("************"); //现在将整个匹配加个括号以示分组,看看输出结果 p = Pattern.compile("(\\d{3,5}[a-z]{2})"); m = p.matcher(s); while (m.find()) { p(m.group()); p(m.group(1));//此时结果m.group()==m.group(1) // p(m.group(2));//如果运行这个显然报错 } p("************"); //下面只在数字匹配处加个括号,看看m.group(1)的输出结果是输出字母 /* 123aa aa 34345bb bb 234cc cc*/ p = Pattern.compile("\\d{3,5}([a-z]{2})"); m = p.matcher(s); while (m.find()) { p(m.group()); p(m.group(1));//此时group1取得是字母 // p(m.group(2));//如果运行这个显然报错 } /*下面只在字母匹配处加个括号,看看m.group(1)的输出结果是输出数字 * 123aa 123 34345bb 34345 234cc 234*/ p = Pattern.compile("(\\d{3,5})[a-z]{2}"); m = p.matcher(s); while (m.find()) { p(m.group()); p(m.group(1));//此时group1取得是数字 // p(m.group(2));//如果运行这个显然报错 } p("************"); /* 分成两组数字一组,字母一组,这样就可以分别拿到该字符串的数字和字母 * 下面是运行结果 符合匹配的子串是----123aa 上述子串的数字---------123 上述子串的字母---------aa 符合匹配的子串是----34345bb 上述子串的数字---------34345 上述子串的字母---------bb 符合匹配的子串是----234cc 上述子串的数字---------234 上述子串的字母---------cc*/ p = Pattern.compile("(\\d{3,5})([a-z]{2})"); s = "123aa-34345bb-234cc-00"; m = p.matcher(s); while (m.find()) { p("符合匹配的子串是----"+m.group());//得到匹配的子串 p("上述子串的数字---------"+m.group(1));//得到上述子串的数字 p("上述子串的字母---------"+m.group(2));//得到上述子串的字母 }