正则表达式matcher.group()用法

本帖转自http://winter8.iteye.com/blog/1463244

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

代码:

    package cn.mingyuan.regexp.singlecharacter;  

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;  

    public class GroupIndexAndStartEndIndexTest {  

    /**
    * @param args
    */
    public static void main(String[] args) {
       // TODO Auto-generated method stub
       String str = "Hello,World! in Java.";
       Pattern pattern = Pattern.compile("W(or)(ld!)");
       Matcher matcher = pattern.matcher(str);
       while(matcher.find()){
        System.out.println("Group 0:"+matcher.group(0));//得到第0组——整个匹配
        System.out.println("Group 1:"+matcher.group(1));//得到第一组匹配——与(or)匹配的
        System.out.println("Group 2:"+matcher.group(2));//得到第二组匹配——与(ld!)匹配的,组也就是子表达式
        System.out.println("Start 0:"+matcher.start(0)+" End 0:"+matcher.end(0));//总匹配的索引
        System.out.println("Start 1:"+matcher.start(1)+" End 1:"+matcher.end(1));//第一组匹配的索引
        System.out.println("Start 2:"+matcher.start(2)+" End 2:"+matcher.end(2));//第二组匹配的索引
        System.out.println(str.substring(matcher.start(0),matcher.end(1)));//从总匹配开始索引到第1组匹配的结束索引之间子串——Wor
       }
    }  

    }  

运行结果:

    Group 0:World!
    Group 1:or
    Group 2:ld!
    Start 0:6 End 0:12
    Start 1:7 End 1:9
    Start 2:9 End 2:12
    Wor  
时间: 2024-10-23 23:50:51

正则表达式matcher.group()用法的相关文章

[C#]正则表达式的基本用法

C#正则表达式的基本用法 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等.[http://www.runoob.com/regexp/regexp-syntax.html] 关于正则表达式的各种字符的介绍,参考上述链接内容即可. 在C#中,正则表达式相关的类有Regex.Match.MatchCollenction这几个.以下代码匹配了字符串中以'|'结尾的

正则表达式Matcher.find报错 java.lang.StackOverflowError解决

在最近一个java项目中使用了正则表达式,抓取网页中的内容,明明很正确的正则表达式,但在Matcher.find时报错了:     public static List<String> findStrs(String regx,String sourceStr){         Pattern pattern = Pattern.compile(regx);         Matcher m = pattern.matcher(sourceStr);         List<Str

grep正则表达式与grep用法详解

功能:输入文件的每一行中查找字符串. 基本用法: grep [-acinv] [--color=auto] [-A n] [-B n] '搜寻字符串' 文件名 参数说明: -a:将二进制文档以文本方式处理-c:显示匹配次数-i:忽略大小写差异-n:在行首显示行号-A:After的意思,显示匹配字符串后n行的数据-B:before的意思,显示匹配字符串前n行的数据-v:显示没有匹配行-A:After的意思,显示匹配部分之后n行-B:before的意思,显示匹配部分之前n行 --color:以特定颜

正则表达式及常用用法

正则表达式,又称正规表示法.常规表示法.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 正则表达式,有木有人像我一样,学了好几遍却还是很懵圈,学的时候老明白了,学完了忘光了.好吧,其实还是练的不够,所谓温故而知新,可以为师矣,今天就随我来复习一下这傲娇的正则表达式吧. 为啥要有正则表达式呢?其

正则表达式的基本用法

Perl 有很多其它语言所没有的特性,这其中对正则表达式(regular expression)的强大支持是它最为突出的一个亮点.正则表达式使得 perl 在处理文本时具有非常强大的优势:快速,灵活而且很可靠,甚至可以说,强大文本处理能力,是 perl 在众多语言中最为闪耀的一个特点. 因此学习 perl 的过程,必然也是学习正则表达式的过程,这或许多少给 perl 的学习增加了些少的负担,但好在正则表达式并不是 perl 所独有的, 它是一门使用非常广泛的语言,在很多工具及其它编程语言中都有广

&quot;grep&quot;及正则表达式的一般用法

grep:是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并能把匹配的行打印出来. 模式:由正则表达式的元字符及文本字符所编写的过滤条件: 元字符:字符不表示其字面意义,而用于表示通配或控制功能: 分两类:             基本正则表达式:BRE             扩展正则表达式:ERE     基本用法:grep [OPTIONS] PATTERN [FILE...] 基本选项:          --color=auto:对匹配到的串做高亮显示          -i  

oracle正则表达式regexp_like的用法详解

ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL 函数LIKE.INSTR.SUBSTR 和REPLACE 用法相同,但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符.POSIX 正则表达式由标准的元字符(met

正则表达式中 group groups区别

先看代码instance: 1 >>> a="123abc456" 2 >>> import re 3 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(0)) 4 123abc456 5 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(1)) 6

Pig group用法举例

group语句可以把具有相同键值的数据聚合在一起,与SQL中的group操作有着本质的区别,在SQL中group by字句创建的组必须直接注入一个或多个聚合函数.在Pig Latin中group和聚合函数之间没有直接的关系. group关键字正如它字面所表达的:将包含了特定的键所对应的值的所有记录封装到一个bag中,之后,用户可以将这个结果传递给一个聚合函数或者使用它做其他一些处理. 触发reduce阶段 数据文件内容如下: [[email protected] ~]$ cat orders.d