`

java 正则表达式--group

阅读更多

使用Matcher类,最重要的一个概念必须清楚:组(Group),在正则表达式中 
()定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的, 
以及这些组和组的下标怎么对应的. 
下面我们看看一个小例子,来说明这个问题 
引用\w(\d\d)(\w+)
这个正则表达式有三个组: 
整个\w(\d\d)(\w+) 是第0组 group(0) 
(\d\d)是第1组 group(1) 
(\w+)是第2组 group(2) 
我们看看和正则表达式匹配的一个字符串x99SuperJava, 
group(0)永远都是匹配整个表达式的字符串的那部分x99SuperJava 
group(1)是第1组(\d\d)匹配的部分:99 
group(2)是第二组(\w+)匹配的那部分SuperJava 
下面我们写一个程序来验证一下: 

 

 

 import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class Test {  
    public static void main(String[] args) {  
        String regex = "\\w(\\d\\d)(\\w+)";  
        String candidate = "x99SuperJava";  
          
        Pattern p = Pattern.compile(regex);  
        Matcher matcher = p.matcher(candidate);  
        if(matcher.find()){  
            int gc = matcher.groupCount();  
            for(int i = 0; i <= gc; i++)  
                System.out.println("group " + i + " :" + matcher.group(i));  
        }  
    }  
}  

运行结果:

group 0 :x99SuperJava

group 1 :99

group 2 :SuperJava

 

另外一个例子:

public class Test {  
	 public static void main(String args[]){  
	      test();  
	  }  
	  public static void test(){  
	     //create a Pattern  
	      Pattern p = Pattern.compile("B(ond)");  
	  
	     //create a Matcher and use the Matcher.group(int) method  
	     String candidateString = "My name is Bond. James Bond.";  
	     //create a helpful index for the sake of output  
	     Matcher matcher = p.matcher(candidateString);  
	     //Find group number 0 of the first find  
	      matcher.find();  
	      String group_0 = matcher.group(0);  
	      String group_1 = matcher.group(1);  
	      System.out.println("Group 0 " + group_0);  
	      System.out.println("Group 1 " + group_1);  
	      System.out.println(candidateString);  
	  
	     //Find group number 1 of the second find  
	      matcher.find();  
	      group_0 = matcher.group(0);  
	      group_1 = matcher.group(1);  
	      System.out.println("Group 0 " + group_0);  
	      System.out.println("Group 1 " + group_1);  
	      System.out.println(candidateString);  
	  }  
}  
 运行结果:

 

Group 0 Bond
Group 1 ond
My name is Bond. James Bond.
Group 0 Bond
Group 1 ond
My name is Bond. James Bond.
例子:
public class Test {  
	public static void main(String args[]){  
		StringBuffer sb = new StringBuffer();  
		String replacement = "Smith";  
		Pattern pattern = Pattern.compile("Bond");  
		Matcher matcher =pattern.matcher("My name is Bond. James Bond. I would like a martini.");  
		matcher.find();
		matcher.appendReplacement(sb, replacement);// 结果是My name is Smith. James
		// Smith
		matcher.appendTail(sb);
		System.out.println(sb);
	}  	 
}  
 运行结果:  My name is Smith. James Bond. I would like a martini.
 
分享到:
评论

相关推荐

    java正则表达式实例

    /** * 匹配的例子: * (GC_F_BA_ACD_FDALFD_I_FALDJF) * (GC_F_BA_ACD_FDALFD) * (GC_F_BA_ACD)等 ... String res = group.substring(1, group.length() - 1); System.out.println(group + ":" + res); } }

    精通正则表达式~~~

    精通正则表达式第三版 搜集于网络 前言..........I 第1章:正则表达式入门.... 1 解决实际问题... 2 作为编程语言的正则表达式... 4 以文件名做类比... 4 以语言做类比... 5 正则表达式的知识框架... 6 对于...

    正则表达式测试工具

    自制的正则表达式测试工具,源码如下: /** * @Project: regutil * @Title: MainFrame.java * @Package com.zhang * @Description: 正则表达式工具 * @author zhanghongbin mypczhanghongbin@gmail.com * @date ...

    Java正则表达式

    超级详细的Java正则表达式,包括普通规则,Group规则,以及Grok

    一个java正则表达式工具类源代码.zip(内含Regexp.java文件)

    * Summary of regular-expression constructs 正则表达式结构简介: * Construct Matches * Characters 字符: * x The character x x 字符 x * \\ The ...

    正则表达式30分钟入门教程

    最重要的是——请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内入门——除非你是超人 :) 别被下面那些复杂的表达式吓倒,只要跟着我一步一步来,你会发现正则表达式其实并没有你想像中的那么困难...

    Java基于正则表达式实现查找匹配的文本功能【经典实例】

    主要介绍了Java基于正则表达式实现查找匹配的文本功能,结合具体实例形式分析了java正则查找、字符串遍历、group分组相关操作技巧,需要的朋友可以参考下

    QRe 正则表达式测试工具

    用法java -jar QRe.jar 运行环境:Windows jre1.5/1.6 特点: 1.支持匹配处高亮显示 2.支持group 3.支持多次匹配 &lt;br&gt;不废话了,请看截图: ...

    named-regexp:为Java 56正则表达式命名的捕获组

    命名正则表达式 这个轻量级的库在Java 5/6(和Android)中增加了对支持。 这是来自Google Code的项目的分支(当前处于非活动状态)。 用法 您可以对Java 7中的命名捕获组使用相同的构造(即(?&lt;name&gt;patt)等),如...

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

    这是就涉及到用脚本来进行操作了,于是自己搞了一个Java的脚本出来,里面涉及到一些正则表达式,自己虽然说会,但是一直对 Matcher类中的group方法 不太了解。网上的博客也没有写的特别清楚,于是有了此文。 0|1...

    Java正则相关的Pattern和Matcher类及遇到的坑

    此篇文章是记录我在学习Java正则表达式时候学到的和遇到的坑。 先来说说 Matcher 里面的三个方法(取的结果以group()方法为例子) matches():整个匹配,只有整个字符序列完全匹配成功,才返回True,否则返回False...

    javascript正则表达式中的replace方法详解

    前面的文章我已经介绍了正则的四个基本方法,当时也提到过replace方法 我们来回顾一下replace方法的使用: 先定义一个正则对象:var re=/中间写匹配的条件/; replace():正则匹配字符串,若是匹配成功,将匹配成功...

    正则表达式match(), search(), finall()的区别

    揭秘match(), search(), finall()的区别,废话不多说,看代码 一、先看后解释 import re str = 'python是世界上最美的语言!我爱你中国!...print(str_match2.group()) # 返回 python是世界上最美的语言!我爱

    java解析出url请求的路径和参数键值对类(解析出url请求的路径,包括页面)

    解析url,本想用正则表达式处理,但正则表达式速度较慢。用split处理一下就可以了

    aidejava源码-tianyiexam:Android新手试水作,正则表达式最大功臣(反正天一考砸了,泄一下愤

    Group O=Field Congratulations L=Luoyang ST=Henan C=CN 使用方法 安装APK,API&lt;14 / IOS / WINDOWS 是不能安装的哟 点击桌面上的图标 点击 "查询" 来获取考试信息 example: 高三二连(Q) 输入考生号 (可与上一步...

    java解析给定url

    * 正则表达式匹配关键数据 * @param line * @return */ private Set&lt;String&gt; parse(String line) { Set resSet = new LinkedHashSet(); Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern...

    Java学习笔记-个人整理的

    {3.4}正则表达式}{71}{section.3.4} {3.5}StringBuffer}{75}{section.3.5} {3.6}StringBuilder}{76}{section.3.6} {3.7}StringBuilder与StringBuffer的缺点}{76}{section.3.7} {3.8}内部类}{77}{section.3.8} ...

    matcher.java

    matcher.group() 是matcher中关键在正则表达式中 ()定义了一个组,group(0)就是指的整个串,group(1)指的是第一个括号里的东西,group(2)指的第二个括号里的东西。 需要细节的朋友,可下载Java文件

    Java开发技术大全(500个源代码).

    leapYearByLogical.java 用逻辑表达式判断闰年 lowToUpper.java 小写字母转换成大写字母 lozengeStar.java 输出一个由*组成的菱形 multiplyTable.java 求乘法口诀表 narrowingConversion_1.java 缩减转换引发...

    P2P-Group-Chat:我所做的基本 P2P(仅在技术上)群聊

    使用正则表达式使用户命令被正确捕获(即它不会执行“只需输入 /nick NAME 即可更改您的名称”的命令) 存储并显示连接的用户名列表(仅纯文本) 如果主机断开连接,允许其他连接的用户作为主机接管 下一步是(可能...

Global site tag (gtag.js) - Google Analytics