java 回溯_正则表达式知识详解之回溯引用 (java版示例)
导读热词
正则表达式知识详解系列,通过代码示例来说明正则表达式知识
示例功能:
1、查询一个字符串的重复字或字母
2、提取html页面里的标题
/**
* 回溯引用,前后一致匹配
* @date 2016-04-20 16:48:07
* @author sgl
*/
public static void backreference(){
String str="上上海市市市";
System.out.println("===========找出重复字===========");
Pattern p=Pattern.compile("(.)\\1+");
Matcher m=p.matcher(str);
while(m.find()){
System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]");
}
System.out.println("===========找出重复字母===========");
str="aafdfdttffjjj";
p=Pattern.compile("([a-z]+)\\1+");
m=p.matcher(str);
while(m.find()){
System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]");
}
//匹配html里的标题
str="
标题1
标题2
标题3
标题4";
System.out.println("===========匹配标题(非回溯方法)===========");
//
标题4这个不符合的标题也会被匹配
p=Pattern.compile(".*?");
m=p.matcher(str);
while(m.find()){
System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]");
}
System.out.println("===========匹配标题(回溯方法)===========");
//
标题4这个不符合的标题不会被匹配
// \1表示前面第一个子表达式,\2表示前面第2个子表达式,依此类推
p=Pattern.compile(".*?");
m=p.matcher(str);
while(m.find()){
System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]");
}
}
运行结果:
===========找出重复字===========
上上 位置:[0,2]
市市市 位置:[3,6]
===========找出重复字母===========
aa 位置:[0,2]
fdfd 位置:[2,6]
tt 位置:[6,8]
ff 位置:[8,10]
jjj 位置:[10,13]
===========匹配标题(非回溯方法)===========
标题1
位置:[0,12]标题2
位置:[12,24]标题3
位置:[24,36]标题4 位置:[36,48]
===========匹配标题(回溯方法)===========
标题1
位置:[0,36]相关文章
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250