`

正则表达式find和group详解

    博客分类:
  • Java
阅读更多

正则表达式是一个很好的东西,要使用好得好好研究。最近对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()返回的字符串下匹配的结果。

 

分享到:
评论

相关推荐

    详解正则表达式Matcher类中group方法

    Matcher类的group方法是正则表达式中非常关键的一个方法,它用于提取匹配正则表达式的特定分组内容。在正则表达式中,可以通过括号“()”来定义一个分组,group方法可以返回这些分组所匹配到的子字符串。 在本文中...

    java正则表达式.zip

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它基于模式匹配的概念,能够高效地进行文本搜索、替换和解析。在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心...

    正则表达式入门 正则表达式详解

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和提取字符串模式。它在编程语言中扮演着至关重要的角色,特别是在数据验证和文本处理方面。正则表达式不仅适用于JAVA,还广泛应用于Python、JavaScript、...

    JAVA正则表达式大全

    这份文档可能深入讲解了`Pattern`和`Matcher`类的用法,如`Pattern.compile()`用于编译正则表达式,`Matcher.find()`用于查找字符串中的匹配部分,`Matcher.group()`获取匹配的子串,以及如何使用`Pattern.split()`...

    正则表达式.txt,正则表达式.txt

    ### 正则表达式知识点详解 #### 一、什么是正则表达式? 正则表达式(Regular Expression),简称“regex”或“regexp”,是一种在文本中查找字符串的强大工具。它由一系列字符和特殊符号组成,用于匹配一组符合...

    正则表达式知识示例详解源代码(java版)

    通过这个Java版的正则表达式示例,我们可以看到正则表达式在实际编程中的应用方式,以及如何利用Java的`Pattern`和`Matcher`类进行文本处理。正则表达式的学习需要时间和实践,但一旦掌握,它将成为我们处理字符串...

    Java正则表达式详解.pdf

    ### Java正则表达式详解:掌握文本匹配的艺术 正则表达式,又称正则规则或正则模式,是一种用于描述字符串结构的语法,被广泛应用于各种编程语言中,包括Java,用于文本处理、数据验证、搜索与替换等场景。本文将...

    (转)java 正则表达式详解

    Java正则表达式详解 Java中的正则表达式是一个强大的文本处理工具,它允许程序员进行复杂的字符串匹配、查找、替换和分割操作。在Java中,正则表达式是通过`java.util.regex`包来实现的,这个包提供了一系列类,如`...

    正则表达式详解和字符串表示

    正则表达式(Regular Expression,简称regex)是用于在文本中匹配特定模式的强大工具,它在编程、数据处理和文本分析等领域中广泛应用。本文将深入探讨正则表达式的语法、功能以及如何在字符串操作中使用它们。 ...

    java正则表达式及例子 pdf

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,...通过阅读《Java 正则表达式的总结和一些小例子.pdf》和《Java正则表达式详解.pdf》,你将能够深入学习和实践更多正则表达式的用法,进一步提升编程技能。

    python正则表达式详解笔记,python正则表达式教学.doc

    ### Python正则表达式详解 #### 一、正则表达式概述 正则表达式(Regular Expression)是一种在计算机科学领域广泛使用的模式匹配工具。它主要用于处理文本数据,包括搜索、替换以及提取文本中的特定模式。许多...

    java正则表达式详解java正则表达式详解

    正则表达式(Regular Expression,简称regex)是一种由字符、元字符和操作符组成的模式,可以用来匹配字符串中的特定序列。在Java中,正则表达式的操作主要依赖于`java.util.regex`包。 1. **基本概念** - **模式...

    java中的正则表达式

    ### Java中的正则表达式详解 #### 一、引言 正则表达式是一种非常强大的文本处理工具,它能够帮助开发者高效地进行字符串的搜索、替换等操作。自JDK 1.4版本起,Java便引入了对正则表达式的支持。本文将详细介绍...

    Java 正则表达式详解

    ### Java 正则表达式详解 #### 一、正则表达式基本概念 正则表达式(Regular Expression),简称regex或regexp,是一种用于处理文本的强大工具。它通过一系列的符号和字母来描述一种抽象的“搜索模式”,可以方便...

Global site tag (gtag.js) - Google Analytics