正则表达式 group的应用

前端之家收集整理的这篇文章主要介绍了正则表达式 group的应用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

什么是组

\\w(\\d{3})(.*)

通过括号可以把正则表达式分成2部分及2组

这就是组的概念

通过方法group()和group(0)是一样的表示整个正则表达式

group(1)获取上一次匹配中(\\d{3})所匹配的字符串

group(2)获取上一次匹配中(.*)所匹配的字符串

/**
*matcher.find()matcher.matcher()区别
*find查找与正则表达式匹配的子字符串
*matcher整个字符串是否与正则表达式匹配
**/
publicclassFindAndMatcherDemo{
publicstaticvoidmain(String[]args){
Stringst="123kjh";
Patternp1=Pattern.compile("\\d{3}");
Patternp2=Pattern.compile("(\\d{3
})(.*)");
Matcherm1=p1.matcher(st);
Matcherm2=p2.matcher(st);
//System.out.println(m1.matches());
if(m1.find()){
System.out.println(m1.group());
System.out.println(st.substring(m1.start(),m1.end()));
}
//System.out.println(m2.find());
if(m2.find()){
System.out.println(m2.group(1));
//System.out.println(st.substring(m1.start(),m1.end()));
}
m2.reset();
if(m2.matches()){
//group()根据正则表达式的组返回字符串对应的值
//m2.matches())所匹配到的字符串“123kjh”

System.out.println(m2.group());
System.out.println(m2.group(1));//获得第一组正则表达式所匹配的字符串“123”
System.out.println(m2.group(2));//获得第二组正则表达式所匹配的字符串“kjh”
}
}

}

当括号中嵌套括号时

Stringst="SHMT19220312002";
Stringregex="((SH|GD)(MT)(\\d{4}\\d{2}\\d{2}))(\\d{3})";
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(st);
if(matcher.matches()){
System.out.println(matcher.group());//SHMT19220312002

System.out.println(matcher.group(1));SHMT19220312

System.out.println(matcher.group(2));SH

System.out.println(matcher.group(3));MT

System.out.println(matcher.group(4));19220312
System.out.println(matcher.group(5));002

从以上可知当括号嵌套括号时

第一个最外层的大括号为1

里面的分别为23

然后再后面的括号为4里面的子括号依次后排5

依次类推

原文链接:https://www.f2er.com/regex/362244.html

猜你在找的正则表达式相关文章