原来,group是针对()来说的,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西,group(2)指的第二个括号里的东西。

最近学习正则表达式,发现Java中的一些术语与其他地方描述的有所差异。比如Java正则表达式中的“组”概念与《正则表达式必知必会》一书中讲述的“子表达式”其实是一样的,只是表述不同而已。由此也引发了使用JavaAPI时对group(int group)、start(int group)、end(int group)不是太理解。

package com.enation.newtest;
import java.io.*;
import java.util.regex.*;
import java.net.*; public class MailTest{
public static void main(String[] args) throws Exception{ String regEx = "count(\\d+)(df)";
String s = "count000dfdfsdffaaaa1";
Pattern pat = Pattern.compile(regEx);
Matcher mat = pat.matcher(s);
if(mat.find()){
System.out.println(mat.group(2));
}
} }

输出结果

mat.group() 输出为 count000df
mat.group(1) 输出为 000
mat.group(2) 输出为 df
如果没有括号会有异常。这就是() 的作用。
如何没有() 可以这样写:
public static void main(String []args){
String regEx = "count\\d+";
String s = "count000dfdfsdff1";
Pattern pat = Pattern.compile(regEx);
Matcher mat = pat.matcher(s);
if(mat.find()){
System.out.println(mat.group());
}
}

但 输出 会按照  "count\\d+";   正则输出.

结果是:count000

 

最新文章

  1. DDD设计中的Unitwork与DomainEvent如何相容?
  2. Linux下java进程CPU占用率高分析方法
  3. sap后台作业管理/sap打印管理
  4. C# 获取指定接口的所有实现类
  5. AVA取整以及四舍五入
  6. ASP.NET 验证码 不同浏览器 不刷新问题
  7. 29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。
  8. MVC 怎么把string字符串转译成html格式
  9. POJ1275出纳员的雇佣【差分约束】
  10. 封装Echarts
  11. swift3.0 基础练习-构造对象并按要求进行排序(struct)
  12. COCO 数据集的使用
  13. VMware安装CentOS 6.9教程
  14. Java Spring Boot VS .NetCore (二)实现一个过滤器Filter
  15. 假如你不小心干掉了系统,你该怎么办?(一次手贱的记录 ~ Ubuntu and Python3.6)
  16. CentOS7.4下编译Hadoop-2.7.6
  17. PL/SQL学习笔记之函数
  18. maven超级pom内容
  19. 安装libvirt管理套件(C/S架构模式,用户管理kvm虚拟机)
  20. hdu 2098 分拆素数和(一个偶数拆分成两个不同素数和 拆法数量)

热门文章

  1. nop 插件解析
  2. win7同时安装python2和python3
  3. Pandas 数据读取
  4. 18式优雅你的Python
  5. P2285 [HNOI2004]打鼹鼠
  6. 两个category方法相同调用哪个
  7. 《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——Huffman编码
  8. 《Cracking the Coding Interview》——第8章:面向对象设计——题目2
  9. 《数据结构》C++代码 堆(优先队列)
  10. shell脚本简单切割字符串