Java正则表达式--分组

版权声明:本文为CSDN博主「gohodo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41084324/article/details/83989223


在java正则表达式中,( )是分组的意思,依旧是所谓的捕获组。每一个( )代表着一个group,该组是通过从左至右计算其括号来编号。
比如:

在表达式((A)(B(C))),有四个这样的组:

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

分组就是按照括号从左至右计算得来的,可以通过调用 matcher 对象的 groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个 int 值,表示matcher对象当前有多个捕获组。
还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在 groupCount 的返回值中。
分组作用:

  1. 将某些规律看成是一组,然后进行组级别的重复,可以得到意想不到的效果。
  2. 分组之后,可以通过后向引用简化表达式(\1 或者$1)。

分组举列

  • 作用1
    对于IP地址的匹配,简单的可以写为如下形式
    String pattern = "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})";
    从这个 我们可以看出,这里有五个group,group(0)、group(1)、group(2)、group(3)、group(4),并且这几个分组的正则表达式都是一样的。我们可以对上述正则表达式进行简化。结果如下:
    String pattern = "(\\d{1,3})(\\.(\\d{1,3})){3}";
    这个表达式的意思就是把IP地址xx.xx.xx.xx后面的带颜色的.xx重复三次。

  • 作用2
    匹配<title>hello</title>标签,简单的正则可以这样写:
    <title>.*</title>
    可以看出,上边表达式中有两个title,完全一样,其实可以通过分组简写。表达式如下:
    <(title)>.*</\1> eclipse中是<(title)>.*</\\1>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 资源来自菜鸟教程:http://www.runoob.com/regexp/regexp-syntax.html ...
    贼厉害阅读 13,644评论 0 6
  • 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言,但是在每...
    南风_001阅读 5,420评论 0 0
  • 参考文章 正则表达式30分钟入门教程 学习之前 学习之前,先安装一个Mac上用的软件,来测试你的正则表达式是否正确...
    刘大帅阅读 9,358评论 2 36
  • 版本:v2.3.5 (2017-6-12) 作者:deerchao 转载请注明来源 目录 跳过目录 本文目标 如何...
    readilen阅读 4,551评论 2 13
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 127,255评论 2 7