Java Matcher类 replaceAll 捕获组使用及使用符号$引用捕获组
来源:互联网 发布:淘宝网电话 编辑:程序博客网 时间:2024/06/08 04:00
String action = null;
String pluginid = null;
String pattern = "/(\\w+)_(\\w+)_(\\w+).html(.*)";
Pattern p = Pattern.compile(pattern, 2 | Pattern.DOTALL);
Matcher m = p.matcher(url);
if (m.find()) {
action = m.replaceAll("$2");
pluginid =m.replaceAll("$3");
return new String[]{action,pluginid};
}else{
return null;
}
}
Java 正则表达式中的捕获组 Mathcer 类的捕获组相关方法
先来看看Matcher 类的捕获组及相关方法
如里要解析一个HTML标签<textare>里面的内容如:
<textarea class="textarea" id="testid">经历了千千万万个轮回,我们相互寻觅似曾相识却又擦肩而过,不要怀疑今生一见就为什么对你如此痴迷。</textarea>
中的“经历了千千万万个轮回,我们相互寻觅似曾相识却又擦肩而过,不要怀疑今生一见就为什么对你如此痴迷。”
private String getTestarea(String text){
Pattern p1=Pattern.compile("<textarea .*?>(.*?)</textarea>");
Matcher m1=p1.matcher("<textarea class=\"textarea\" id=\"testid\">经历了千千万万个轮回,我们相互寻觅似曾相识却又擦肩而过,不要怀疑今生一见就为什么对你如此痴迷。</textarea>");
String result=null;
if(m1.find()){
result=m1.group();
System.out.println(result);
result=m1.group(1);
System.out.println(result);
}
}
对应结果为:
<textarea class="textarea" id="testid">经历了千千万万个轮回,我们相互寻觅似曾相识却又擦肩而过,不要怀疑今生一见就为什么对你如此痴迷。</textarea>
经历了千千万万个轮回,我们相互寻觅似曾相识却又擦肩而过,不要怀疑今生一见就为什么对你如此痴迷。
可以看到使用用java 正则表达式的捕获组很容易的就得到了标签<textarea>中的内容
在模式串“<textarea .*?>(.*?)</textarea>” 中的(.*?)对应捕获组1,即m1.group(1),整一个匹配串对应捕获组0,即m1.group() 与m1.group(0)一至,如果有多少个模式串中有多少个()情况以上面的类似大家可能网上搜索一下。上面提到了Matcher类的方法这里顺便讲一下find和matchers方法的区别
Matcher类 find 和matchers方法的区别
Matcher m1=p1.matcher("123456");
m1.find();
System.out.println(m1.start());//0
System.out.println(m1.end());//6
如果不是整个要匹配的字符串和模式对应结果,如下
Matcher m1=p1.matcher("qq123ww123ee123");
m1.find();
System.out.println(m1.start());//2
System.out.println(m1.end());//5
m1.find();
System.out.println(m1.start());//7
System.out.println(m1.end());//10
而matchers方法是对整个匹配串与模式串进行比较,符合结果为true否则为false。
使用符号$对捕获组进行引用
String action = null;
String pluginid = null;
String pattern = "/(\\w+)_(\\w+)_(\\w+).html(.*)";
Pattern p = Pattern.compile(pattern, 2 | Pattern.DOTALL);
Matcher m = p.matcher(url);
if (m.find()) {
action = m.replaceAll("$2");
pluginid =m.replaceAll("$3");
return new String[]{action,pluginid};
}else{
return null;
}
}
group
(g). The first number after the$ is always treated as part of the group reference. Subsequent numbers are incorporated into g if they would form a legal group reference. Only the numerals '0' through '9' are considered as potential components of the group reference. If the second group matched the string "foo", for example, then passing the replacement string"$2bar" would cause "foobar" to be appended to the string buffer. A dollar sign ($) may be included as a literal in the replacement string by preceding it with a backslash (\$). - Java Matcher类 replaceAll 捕获组使用及使用符号$引用捕获组
- Java正则表达式对捕获组的内容的动态修改,replaceAll加强版
- [疯狂Java]正则表达式:捕获组、反向引用、捕获组命名
- 正则表达式中捕获组的使用
- JAVA正则Pattern和Matcher及replaceAll
- js中使用正则表达式(五)特殊字符、匹配模式、捕获组与反向引用介绍
- java中的正则表达式捕获组与引用的概念
- JAVA正则表达式的捕获组、back引用、"$n"
- python异常捕获及使用场景
- 捕获组
- ue中使用正则表达式来替换-正则表达式-的捕获组与非捕获组
- java 使用 instanceof 关键字,捕获自定义异常
- java正则表达式捕获组
- 使用视频捕获
- 3.2使用视频捕获
- 使用摄像头捕获图片
- C++异常捕获使用
- 使用phonegap 捕获视频
- 2014-11-6Android学习------SurfaceView的框架源码
- 使用HGE粒子系统编辑器界面
- typedef 总结(2)
- Android架构师素养
- Linux epoll模型
- Java Matcher类 replaceAll 捕获组使用及使用符号$引用捕获组
- 解决cocoapods在64位iOS7系统下面的警告问题
- UVa 1153 - Keep the Customer Satisfied (贪心 + 优先队列)
- Android复杂界面设计总结
- 第11周 项目1 函数版星号图 (2)(3)
- HDU 3842 Machine Works cdq分治 斜率优化
- 真实的开发管理经验(带团队
- USACO 1.1
- myeclipse svn安装(link安装)