正则表达式知识详解之回溯引用 (java版示例)

朴灿烈づ我的快乐病毒、 2022-08-21 11:41 241阅读 0赞

正则表达式知识详解系列,通过代码示例来说明正则表达式知识

源代码下载地址:http://download.csdn.net/detail/gnail_oug/9504094

示例功能:

1、查询一个字符串的重复字或字母

2、提取html页面里的标题

  1. /**
  2. * 回溯引用,前后一致匹配
  3. * @date 2016-04-20 16:48:07
  4. * @author sgl
  5. */
  6. public static void backreference(){
  7. String str="上上海市市市";
  8. System.out.println("===========找出重复字===========");
  9. Pattern p=Pattern.compile("(.)\\1+");
  10. Matcher m=p.matcher(str);
  11. while(m.find()){
  12. System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]");
  13. }
  14. System.out.println("===========找出重复字母===========");
  15. str="aafdfdttffjjj";
  16. p=Pattern.compile("([a-z]+)\\1+");
  17. m=p.matcher(str);
  18. while(m.find()){
  19. System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]");
  20. }
  21. //匹配html里的标题
  22. str="<h1>标题1</h1><h2>标题2</h2><h3>标题3</h3><h4>标题4</h5>";
  23. System.out.println("===========匹配标题(非回溯方法)===========");
  24. //<h4>标题4</h5>这个不符合的标题也会被匹配
  25. p=Pattern.compile("<h[1-6]>.*?</h[1-6]>");
  26. m=p.matcher(str);
  27. while(m.find()){
  28. System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]");
  29. }
  30. System.out.println("===========匹配标题(回溯方法)===========");
  31. //<h4>标题4</h5>这个不符合的标题不会被匹配
  32. // \1表示前面第一个子表达式,\2表示前面第2个子表达式,依此类推
  33. p=Pattern.compile("<h([1-6])>.*?</h\\1>");
  34. m=p.matcher(str);
  35. while(m.find()){
  36. System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]");
  37. }
  38. }

运行结果:

  1. ===========找出重复字===========
  2. 上上 位置:[0,2]
  3. 市市市 位置:[3,6]
  4. ===========找出重复字母===========
  5. aa 位置:[0,2]
  6. fdfd 位置:[2,6]
  7. tt 位置:[6,8]
  8. ff 位置:[8,10]
  9. jjj 位置:[10,13]
  10. ===========匹配标题(非回溯方法)===========
  11. <h1>标题1</h1> 位置:[0,12]
  12. <h2>标题2</h2> 位置:[12,24]
  13. <h3>标题3</h3> 位置:[24,36]
  14. <h4>标题4</h5> 位置:[36,48]
  15. ===========匹配标题(回溯方法)===========
  16. <h1>标题1</h1> 位置:[0,12]
  17. <h2>标题2</h2> 位置:[12,24]
  18. <h3>标题3</h3> 位置:[24,36]

发表评论

表情:
评论列表 (有 0 条评论,241人围观)

还没有评论,来说两句吧...

相关阅读