今天在使用正则匹配的过程中,有如下这样几个函数:

没有使用过,也没有了解过,抱着一颗求知的心,看了看相关的博客,有那么一点理解,但不是完全消化,就多查找了相关知识点做了一个整合,希望能帮到一样有疑惑的你们。奥利给!

想要弄清这几个方法,首先要弄清Java正则表达式中的捕获组的概念。

捕获组

捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
例如,正则表达式 (smile) 创建了单一分组,组里包含"s",“m”,“i”,“l” 和 “e”。
捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:

  • ( ( A ) ( B ( C ) ) )
  • ( A )
  • ( B ( C ) )
  • ( C )

接下来我们来看看博文一开始地图片上的几个方法。

group()、group(i)、groupCount()

如果要使用,我们需通过调用matcher对象的这几种方法。

  • public String group():返回由以前匹配操作所匹配的输入子序列。 对于具有输入序列 s 的匹配器 m,表达式 m.group() 和 s.substring(m.start(), m.end()) 是等效的。

  • public String group(int i):返回上次匹配操作的某个group。如果匹配成功,但是没能找到group,则返回null。

    【注意】:由于捕获组是从 1 开始从左到右的索引,因此表达式 m.group(0) 等效于 m.group()。 即:group(0))是一个特殊的组,它总是代表整个表达式。该组不包括在 groupCount 的返回值中。

  • public int groupCount(): 查看表达式有多少个分组。groupCount 方法返回一个 int 值,表示matcher对象当前有多个捕获组。

举个例子【菜鸟教程中的】
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexMatches
{public static void main( String args[] ){// 按指定模式在字符串查找String line = "This order was placed for QT3000! OK?";String pattern = "(\\D*)(\\d+)(.*)";// 创建 Pattern 对象Pattern r = Pattern.compile(pattern);// 现在创建 matcher 对象Matcher m = r.matcher(line);if (m.find( )) {System.out.println("Found value: " + m.group(0) );System.out.println("Found value: " + m.group(1) );System.out.println("Found value: " + m.group(2) );System.out.println("Found value: " + m.group(3) ); } else {System.out.println("NO MATCH");}}
}

以上实例编译运行结果如下:

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000
Found value: ! OK?

Java正则表达式中,group()、group(i)、groupCount()含义详解相关推荐

  1. Python中的__name__和__main__含义详解

    背景 在写Python代码和看Python代码时,我们常常可以看到这样的代码: ? 1 2 3 4 5 def main():     ...... if __name__ == "__ma ...

  2. Java 11中的新功能和API详解系列1

    Java 11中的新功能和API详解系列1 2018.9.27 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. JDK 11在语言语法方面有一个小改动,增加了相当数量的新API,以及 ...

  3. JAVA正则表达式:Pattern类与Matcher类详解(转)

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...

  4. JAVA正则表达式:Pattern类与Matcher类详解

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...

  5. [转载] Java 语言中的实例初始化块 ( IIB) 详解

    参考链接: Java中的实例初始化块(IIB) 在 Java 语言中的类初始化块 文章中我们简单的介绍了下 Java 中的实例初始化块 ( IIB ).不过我觉得介绍的有点简单了,于是,再写一篇文章详 ...

  6. java里的初始化块_[转载] Java 语言中的实例初始化块 ( IIB) 详解

    参考链接: Java中的实例初始化块(IIB) 在 Java 语言中的类初始化块 文章中我们简单的介绍了下 Java 中的实例初始化块 ( IIB ).不过我觉得介绍的有点简单了,于是,再写一篇文章详 ...

  7. Java 语言中的实例初始化块 ( IIB) 详解

    在 Java 语言中的类初始化块 文章中我们简单的介绍了下 Java 中的实例初始化块 ( IIB ).不过我觉得介绍的有点简单了,于是,再写一篇文章详细介绍下吧. Java 语言中,存在三种操作:方 ...

  8. java emptylist_Java中Collections的emptyList、EMPTY_LIST详解

    原创:https://mingyang.blog.csdn.net/ 在写方法的时候可能结果集不存在,需要返回null,在调用这个方法的地方就要做一个null判断,很繁琐,容易出问题,这个时候就可以使 ...

  9. java wed中uri url urn_URI URL URN 详解

    经常听说URL, URI, URN 但它们间的区别不胜明了,下面我们就把它们搞搞清楚: 声明:本文参考http权威指南 URI: 统一资源标示符(Uniform Resource Identifier ...

  10. Java 运算符中 前++ 和后++ 的区别详解

    博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,

最新文章

  1. 【图论专题】图的存储与遍历(最小环、所有环的大小)
  2. SpringBoot2.XX 产生的问题
  3. 重定向、管道和用户管理练习题
  4. timespan怎么比较大小_装饰画怎么挂都不好看?那是你不懂技巧!整理了一篇攻略,请拿好...
  5. Mybatis报错 元素内容必须由格式正确的字符数据或标记组成
  6. python创建变量_Python每天一分钟:给类对象动态新增/删除成员变量和方法(函数)...
  7. java 5 新特性 for_java5 新特性
  8. fpga如何约束走线_FPGA时序约束实战篇之多周期路径约束
  9. socket协议和http协议性能对比
  10. python基础--函数1
  11. 数学建模--层次分析法
  12. 图像质量评价指标MSE/PSNR/SSIM
  13. 163邮箱怎么注册,怎么给邮箱起一个好用的用户名?
  14. 网络推广行业拓客的10个经典方法
  15. 自整理Java面试题集锦(Java基础 1)
  16. Counting Liars
  17. Photoshop支持ICO图片格式(咋个办呢 zgbn)
  18. 白炽灯护眼还是LED护眼?盘点专业护眼的LED护眼灯
  19. Docker容器——重命名镜像的TAG
  20. 【Linux39-9】k8s存储之卷(volumes)、挂载不同类型的卷(emptyDir、hostpath、nfs)

热门文章

  1. php设置pdf下载加密文件,pdf文件加密方法 PDF文件怎样加密 如何给PDF文件添加打开口令...
  2. CStdioFile类的使用1
  3. 基于python的opencv图像处理对交通路口的红绿灯进行颜色检测(最简单的方法)
  4. Android动画定时lnvaliate,Android6.0 MTK6737 启动流程 · Younix’s Studio
  5. php doctrine 使用,php – 在Symfony中使用Doctrine创建表
  6. 群晖docker中安装VS code
  7. 学会使用help()
  8. ubuntu安装中文拼音输入法,装系统的第一步
  9. centos6安装wget
  10. 未来的计算机能帮人类炒股,未来计算机能帮人类炒股吗