加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 group的应用

发布时间:2020-12-14 01:58:51 所属栏目:百科 来源:网络整理
导读:什么是组 w(d{3})(.*) 通过括号可以把正则表达式分成2部分及2组 这就是组的概念 通过方法group()和group(0)是一样的表示整个正则表达式 group(1)获取上一次匹配中 ( d{3 })所匹配的字符串 group(2) 获取上一次匹配中 (.*) 所匹配的字符串 /** *matcher

什么是组

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

依次类推

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读