Matcher.group函数的用法
2015-10-21 13:22
351 查看
原来,group是针对()来说的,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西,group(2)指的第二个括号里的东西。
最近学习正则表达式,发现Java中的一些术语与其他地方描述的有所差异。比如Java正则表达式中的“组”概念与《正则表达式必知必会》一书中讲述的“子表达式”其实是一样的,只是表述不同而已。由此也引发了使用JavaAPI时对group(int
group)、start(int group)、end(int group)不是太理解。
public static void main(String []args){
String regEx = "count(\\d+)";
String s = "count000dfdfsdff1";
Pattern pat = Pattern.compile(regEx);
Matcher mat = pat.matcher(s);
if(mat.find()){
System.out.println(mat.group(1));
}
}
这样写结果为:000
如果没有括号会有异常。这就是() 的作用。
如何没有() 可以这样写:
public static void main(String []args){
String regEx = "count\\d+";
String s = "count000dfdfsdff1";
Pattern pat = Pattern.compile(regEx);
Matcher mat = pat.matcher(s);
if(mat.find()){
System.out.println(mat.group());
}
}
但 输出 会按照 "count\\d+";
正则输出.
结果是:count000
最近学习正则表达式,发现Java中的一些术语与其他地方描述的有所差异。比如Java正则表达式中的“组”概念与《正则表达式必知必会》一书中讲述的“子表达式”其实是一样的,只是表述不同而已。由此也引发了使用JavaAPI时对group(int
group)、start(int group)、end(int group)不是太理解。
public static void main(String []args){
String regEx = "count(\\d+)";
String s = "count000dfdfsdff1";
Pattern pat = Pattern.compile(regEx);
Matcher mat = pat.matcher(s);
if(mat.find()){
System.out.println(mat.group(1));
}
}
这样写结果为:000
如果没有括号会有异常。这就是() 的作用。
如何没有() 可以这样写:
public static void main(String []args){
String regEx = "count\\d+";
String s = "count000dfdfsdff1";
Pattern pat = Pattern.compile(regEx);
Matcher mat = pat.matcher(s);
if(mat.find()){
System.out.println(mat.group());
}
}
但 输出 会按照 "count\\d+";
正则输出.
结果是:count000
相关文章推荐
- Android动画--PropertyAnimation
- Linux bash 中,如何将正常信息和错误信息输出到文件
- SharePoint自动化系列——Manage "Site Subscriptions" using PowerShell
- 安卓飞机大战源码,上图!!!!运行效果如下!!!
- Linux(CenterOS 6.5)服务器安装Mysql5.6
- Android:去掉页面原来的标题 titlebar
- div重叠问题
- java图片路径问题
- 模板方法模式
- Linux下Java安装与配置
- 欢迎使用CSDN-markdown编辑器
- JS判断手机浏览器
- 九度考研机试教程 11-题目1431:Sort hash
- Apache 编 译 时 遇 到 的 错 误
- 单链表
- 架构之路(五):忘记数据库
- setInterval()和setTimeout()的两种使用方式及作用域
- kk
- Android Service被关闭后自动重启,解决被异常kill 服务
- mysql 执行状态分析 show processlist