Java正则表达式matcher.group()用法代码

 更新时间:2023年08月01日 11:14:42   作者:杰克说互联网  
这篇文章主要给大家介绍了关于Java正则表达式matcher.group()用法的相关资料,最近在做一个项目,需要使用matcher.group()方法匹配出需要的内容,文中给出了详细的代码示例,需要的朋友可以参考下

java中正则匹配 group是针对()来说的,因为你匹配到的结果是一组,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西,group(2)指的第二个括号里的东西。

代码:

package cn.mingyuan.regexp.singlecharacter;  
    import java.util.regex.Matcher;  
    import java.util.regex.Pattern;  
    public class GroupIndexAndStartEndIndexTest {  
    /** 
    * @param args 
    */  
    public static void main(String[] args) {  
       // TODO Auto-generated method stub  
       String str = "Hello,World! in Java.";  
       Pattern pattern = Pattern.compile("W(or)(ld!)");  
       Matcher matcher = pattern.matcher(str);  
       while(matcher.find()){  
        System.out.println("Group 0:"+matcher.group(0));//得到第0组——整个匹配  
        System.out.println("Group 1:"+matcher.group(1));//得到第一组匹配——与(or)匹配的  
        System.out.println("Group 2:"+matcher.group(2));//得到第二组匹配——与(ld!)匹配的,组也就是子表达式  
        System.out.println("Start 0:"+matcher.start(0)+" End 0:"+matcher.end(0));//总匹配的索引  
        System.out.println("Start 1:"+matcher.start(1)+" End 1:"+matcher.end(1));//第一组匹配的索引  
        System.out.println("Start 2:"+matcher.start(2)+" End 2:"+matcher.end(2));//第二组匹配的索引  
        System.out.println(str.substring(matcher.start(0),matcher.end(1)));//从总匹配开始索引到第1组匹配的结束索引之间子串——Wor  
       }  
    }  
    } 

运行结果:

Group 0:World!  
    Group 1:or  
    Group 2:ld!  
    Start 0:6 End 0:12  
    Start 1:7 End 1:9  
    Start 2:9 End 2:12  
    Wor  

注意事项:

matcher.group()必须和matcher.find()配合才行,不然Java语言会报运行时异常。

通过在循环中执行matcher.group(),可以将所有匹配项全部提取出来,因此在处理字符串时非常有用。

总结:

其实group(),start(),end()所带的参数i就是正则表达式中的子表达式索引(第几个子表达式),由于刚开始对Java正则表达式中的组的概念不清晰,导致理解困难。当将“组”的概念与“子表达式”对应起来之后,理解matcher的group,start,end就完全没有障碍了。

到此这篇关于Java正则表达式matcher.group()用法代码的文章就介绍到这了,更多相关Java正则表达式matcher.group()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Javaweb resin4如何配置端口虚拟目录

    Javaweb resin4如何配置端口虚拟目录

    这篇文章主要介绍了Javaweb resin4如何配置端口虚拟目录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • mybatis plus 自动转驼峰配置小结

    mybatis plus 自动转驼峰配置小结

    SpringBoot提供两种配置Mybatis的方式,第一种是通过yml或application.properties文件开启配置,第二种是使用自定义配置类,通过给容器添加一个ConfigurationCustomizer来实现更灵活的配置,这两种方法可以根据项目需求和个人喜好选择使用
    2024-10-10
  • Java中的反射机制详解

    Java中的反射机制详解

    这篇文章主要介绍了JAVA 反射机制的相关知识,文中讲解的非常细致,代码帮助大家更好的理解学习,感兴趣的朋友可以了解下
    2021-09-09
  • Java自然排序Comparable使用方法解析

    Java自然排序Comparable使用方法解析

    这篇文章主要介绍了Java自然排序Comparable使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java 中的Printstream介绍_动力节点Java学院整理

    Java 中的Printstream介绍_动力节点Java学院整理

    PrintStream 是打印输出流,它继承于FilterOutputStream。接下来通过本文给大家介绍Java 中的Printstream,需要的朋友参考下吧
    2017-05-05
  • Springboot文件上传功能的实现

    Springboot文件上传功能的实现

    这篇文章主要介绍了SpringBoot文件上传功能的实现,文中通过代码示例介绍的非常详细,具有一定的参考学习价值,需要的朋友们可以参考阅读
    2023-04-04
  • ArrayList源码探秘之Java动态数组的实现

    ArrayList源码探秘之Java动态数组的实现

    这篇文章将带大家从ArrayList源码来探秘一下Java动态数组的实现,文中的示例代码讲解详细,对我们深入了解JavaScript有一定的帮助,需要的可以参考一下
    2023-08-08
  • Vert.x运行环境搭建流程图解

    Vert.x运行环境搭建流程图解

    这篇文章主要介绍了Vert.x运行环境搭建流程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • JavaCV实现获取视频每帧并保存

    JavaCV实现获取视频每帧并保存

    这篇文章主要为大家详细介绍了JavaCV实现获取视频每帧并保存,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • SpringBoot项目如何设置权限拦截器和过滤器

    SpringBoot项目如何设置权限拦截器和过滤器

    这篇文章主要介绍了使用lombok时如何自定义get、set方法问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论