正则表达式是一个很好的东西,要使用好得好好研究。最近对find和group方法比较模糊。经研究记录下笔记。
调用group()方法前,都前要用find方法。否则报错。其实看Matcher类可以看到其中有一个int[] groups;
其实这个数组就是保存group匹配的数据。首先要知道一个正则表达式之后有几组。可通过groupCount()方法得到,其实很简单,是有几对大括号就有几组。例如:
@Test
public void testLookAhead() {
Pattern p = Pattern.compile("(\\w{2})(aa)");
Matcher m = p.matcher("12332aa438aaf");
Assert.assertEquals(2, m.groupCount());
}
有两对大括号那就是两组了。开始看到有帖子说这有三组,把group(0)当成一组,其实group(0)和group()是相等的。然后查看group源代码发现
public String group(int group) {
if (first < 0)
throw new IllegalStateException("No match found");
if (group < 0 || group > groupCount())
throw new IndexOutOfBoundsException("No group " + group);
if ((groups[group*2] == -1) || (groups[group*2+1] == -1))
return null;
return getSubSequence(groups[group * 2], groups[group * 2 + 1]).toString();
}
就知道group方法前,一定要find一下了,否则Matcer类中first的初始值是-1.然后调用find方法返回false的时候,first还是false,所有所有的group方法都是要在find方法返回true的情况下,也就是字符串要匹配正则表达式的。
然后group(1),group(2).......group(n)都是在group()返回的字符串下匹配的结果。
分享到:
相关推荐
正则表达式详解正则表达式详解正则表达式详解正则表达式详解
java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解
正则表达式语法详解 正则表达式语法详解 正则表达式语法详解 正则表达式语法详解 正则表达式语法详解
java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...
正则表达式 详解 基础 正则表达式之道(A Tao of Regular Expressions)
正则表达式,正则表达式,正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式
常用正则表达式 正则表达式 常用正则表达式 正则表达式
正则表达式.rar正则表达式.rar正则表达式.rar正则表达式.rar
《学习正则表达式》从正则表达式的基本概念讲起,到编写完整的sed和Perl脚本,再到转换HTML文件,将这种强大的工具解释得清晰透彻。...《学习正则表达式》适合对正则表达式感兴趣的程序员和互联网从业者。
正则表达式验证工具 V1.0 本软件主要用于检测正则表达式是否正确。 运行环境:本软件为绿色软件,无需安装,但需要Microsoft .NET Framework 4 支持,如果没有请前去下载(下载路径:...
java,正则表达式,详解,java正则表达式,PDF
正则表达式日期校验 正则表达式日期校验 正则表达式日期校验
正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式...
正则表达式正则表达式正则表达式正则表达式 验证程序
Java正则表达式Java正则表达式Java正则表达式Java正则表达式
正则表达式帮助 有用的正则表达式帮助 有用的正则表达式帮助 有用的正则表达式帮助 有用的
对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,《正则表达式经典实例》给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。...
主要介绍了正则表达式Matcher类中group方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
正则表达式速查 正则表达式举例 正则表达式学习 (4页A4纸)