使用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); } }运行结果:
相关推荐
/** * 匹配的例子: * (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正则表达式,包括普通规则,Group规则,以及Grok
* Summary of regular-expression constructs 正则表达式结构简介: * Construct Matches * Characters 字符: * x The character x x 字符 x * \\ The ...
最重要的是——请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内入门——除非你是超人 :) 别被下面那些复杂的表达式吓倒,只要跟着我一步一步来,你会发现正则表达式其实并没有你想像中的那么困难...
主要介绍了Java基于正则表达式实现查找匹配的文本功能,结合具体实例形式分析了java正则查找、字符串遍历、group分组相关操作技巧,需要的朋友可以参考下
用法java -jar QRe.jar 运行环境:Windows jre1.5/1.6 特点: 1.支持匹配处高亮显示 2.支持group 3.支持多次匹配 <br>不废话了,请看截图: ...
命名正则表达式 这个轻量级的库在Java 5/6(和Android)中增加了对支持。 这是来自Google Code的项目的分支(当前处于非活动状态)。 用法 您可以对Java 7中的命名捕获组使用相同的构造(即(?<name>patt)等),如...
这是就涉及到用脚本来进行操作了,于是自己搞了一个Java的脚本出来,里面涉及到一些正则表达式,自己虽然说会,但是一直对 Matcher类中的group方法 不太了解。网上的博客也没有写的特别清楚,于是有了此文。 0|1...
此篇文章是记录我在学习Java正则表达式时候学到的和遇到的坑。 先来说说 Matcher 里面的三个方法(取的结果以group()方法为例子) matches():整个匹配,只有整个字符序列完全匹配成功,才返回True,否则返回False...
前面的文章我已经介绍了正则的四个基本方法,当时也提到过replace方法 我们来回顾一下replace方法的使用: 先定义一个正则对象:var re=/中间写匹配的条件/; replace():正则匹配字符串,若是匹配成功,将匹配成功...
揭秘match(), search(), finall()的区别,废话不多说,看代码 一、先看后解释 import re str = 'python是世界上最美的语言!我爱你中国!...print(str_match2.group()) # 返回 python是世界上最美的语言!我爱
解析url,本想用正则表达式处理,但正则表达式速度较慢。用split处理一下就可以了
Group O=Field Congratulations L=Luoyang ST=Henan C=CN 使用方法 安装APK,API<14 / IOS / WINDOWS 是不能安装的哟 点击桌面上的图标 点击 "查询" 来获取考试信息 example: 高三二连(Q) 输入考生号 (可与上一步...
* 正则表达式匹配关键数据 * @param line * @return */ private Set<String> parse(String line) { Set resSet = new LinkedHashSet(); Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern...
{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.group() 是matcher中关键在正则表达式中 ()定义了一个组,group(0)就是指的整个串,group(1)指的是第一个括号里的东西,group(2)指的第二个括号里的东西。 需要细节的朋友,可下载Java文件
leapYearByLogical.java 用逻辑表达式判断闰年 lowToUpper.java 小写字母转换成大写字母 lozengeStar.java 输出一个由*组成的菱形 multiplyTable.java 求乘法口诀表 narrowingConversion_1.java 缩减转换引发...
使用正则表达式使用户命令被正确捕获(即它不会执行“只需输入 /nick NAME 即可更改您的名称”的命令) 存储并显示连接的用户名列表(仅纯文本) 如果主机断开连接,允许其他连接的用户作为主机接管 下一步是(可能...