正则表达式知识详解之回溯引用 (java版示例)
发布时间:2020-12-14 04:25:59 所属栏目:百科 来源:网络整理
导读:正则表达式知识详解系列,通过代码示例来说明正则表达式知识 源代码下载地址: http://download.csdn.net/detail/gnail_oug/9504094 示例功能: 1、查询一个字符串的重复字或字母 2、提取html页面里的标题 /** * 回溯引用,前后一致匹配 * @date 2016-04-20
正则表达式知识详解系列,通过代码示例来说明正则表达式知识 源代码下载地址:http://download.csdn.net/detail/gnail_oug/9504094
示例功能: 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="<h1>标题1</h1><h2>标题2</h2><h3>标题3</h3><h4>标题4</h5>"; System.out.println("===========匹配标题(非回溯方法)==========="); //<h4>标题4</h5>这个不符合的标题也会被匹配 p=Pattern.compile("<h[1-6]>.*?</h[1-6]>"); m=p.matcher(str); while(m.find()){ System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]"); } System.out.println("===========匹配标题(回溯方法)==========="); //<h4>标题4</h5>这个不符合的标题不会被匹配 // 1表示前面第一个子表达式,2表示前面第2个子表达式,依此类推 p=Pattern.compile("<h([1-6])>.*?</h1>"); 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] ===========匹配标题(非回溯方法)=========== <h1>标题1</h1> 位置:[0,12] <h2>标题2</h2> 位置:[12,24] <h3>标题3</h3> 位置:[24,36] <h4>标题4</h5> 位置:[36,48] ===========匹配标题(回溯方法)=========== <h1>标题1</h1> 位置:[0,36] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |