/* 输出结果,这是没有分组的情形
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));//得到上述子串的字母
}
从分组情况可以发现,每出现一个(左)括号,代表一个分组
每天一点正则表达式积累(六)
关注
打赏