当前位置: 首页 > news >正文

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

相关文章:

  • java后台线程_67.Java后台线程
  • java 远程 shell脚本_Java 远程调用 shell脚本
  • python自动化数据驱动_Selenium2+python自动化之数据驱动(ddt)
  • java圆和椭圆的关系_圆与椭圆 - brifuture - 博客园
  • java attributelist_java集合类(二)List学习
  • java ccf认证解答_CCF认证考试(java)---窗口
  • java 平滑 停止_设计Java应用程序的平滑停止
  • java开发按键精灵_Java 按键精灵
  • java同步开销_java – 为什么对Map的同步访问会增加大量的开销
  • java字节码常量池_Java字节码常量池深度剖析与字节码整体结构分解
  • java控制语句案例_Java基础之流程控制(示例代码)
  • mysql 怎么设置ip地址_Mysql如何设置用户指定ip地址操作数据库
  • android_iphone和java三个平台一致的加密方法_Android、iPhone和Java三个平台一致的加密工具...
  • java最崇拜谁_蓝桥杯(java)个人赛真题:小朋友崇拜圈
  • java数组函数结局实际问题_java函数与数组
  • 【刷算法】从上往下打印二叉树
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Javascript基础之Array数组API
  • JWT究竟是什么呢?
  • LeetCode18.四数之和 JavaScript
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Python十分钟制作属于你自己的个性logo
  • 测试开发系类之接口自动化测试
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 规范化安全开发 KOA 手脚架
  • 理解在java “”i=i++;”所发生的事情
  • 设计模式(12)迭代器模式(讲解+应用)
  • 深入 Nginx 之配置篇
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​520就是要宠粉,你的心头书我买单
  • ​Spring Boot 分片上传文件
  • # .NET Framework中使用命名管道进行进程间通信
  • #android不同版本废弃api,新api。
  • #QT项目实战(天气预报)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (二)学习JVM —— 垃圾回收机制
  • (剑指Offer)面试题34:丑数
  • (三分钟)速览传统边缘检测算子
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • /etc/sudoer文件配置简析
  • ::前边啥也没有
  • []error LNK2001: unresolved external symbol _m
  • [AIGC codze] Kafka 的 rebalance 机制
  • [Android] Implementation vs API dependency