Java正则表达式中的反向引用

Java正则表达式中的反向引用是Java提供的另一个重要功能。 要了解反向引用 ,我们首先需要了解群组 。 正则表达式中的分组意味着将多个字符视为一个单元。 通过将要分组的字符放在一组括号“()”中来创建它们。 每组括号对应一个

反向引用很方便,因为它允许我们重复模式而无需再次编写。 我们可以使用\#来引用先前定义的组(#是组号)。 阅读以下两个示例后,这将更有意义。

示例1:查找重复图案

(\ d \ d \ d)\ 1匹配123123,但不连续匹配123456。 这表明所引用的模式必须确切地是名称。

String str = "123456";
Pattern p = Pattern.compile("(\\d\\d\\d)\\1");
Matcher m = p.matcher(str);
System.out.println(m.groupCount());
while (m.find()) {String word = m.group();System.out.println(word + " " + m.start() + " " + m.end());
}
1
123123 0 6

示例2:查找重复的单词

String pattern = "\\b(\\w+)\\b[\\w\\W]*\\b\\1\\b";
Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
String phrase = "unique is not duplicate but unique, Duplicate is duplicate.";
Matcher m = p.matcher(phrase);
while (m.find()) {String val = m.group();System.out.println("Matching subsequence is \"" + val + "\"");System.out.println("Duplicate word: " + m.group(1) + "\n");
}
Matching subsequence is “unique is not duplicate but unique”
Duplicate word: unique
Matching subsequence is “Duplicate is duplicate”
Duplicate word: Duplicate

注意:这不是使用正则表达式查找重复单词的好方法。 从上面的示例中,第一个“重复项”不匹配。

为什么要使用反向引用?

  • 查看更多正则表达式示例 。

参考:我们的JCG合作伙伴 Wang Xiaoran在Programcreek博客上的Java正则表达式中的反向引用 。

翻译自: https://www.javacodegeeks.com/2013/09/backreferences-in-java-regular-expressions.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC原理MVC设计思想

什么是MVC? MVC是一种架构模式 --- 程序分层,分工合作,既相互独立,又协同工作 MVC是一种思考方式 --- 需要将什么信息展示给用户? 如何布局? 调用哪些业务逻辑? MVC流程图如下图所示: MVC核心思…

Hbase 的javaAPI基本操作用 在idea上的实现

1.保证集群开启&#xff1a; jps有如下进程 2.pom文件中的依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sche…

用php求矩形周长,PHP实现的简单三角形、矩形周长面积计算器分享

运用php面向对象的知识设计一个图形计算器&#xff0c;同时也运用到了抽象类知识&#xff0c;这个计算器可以计算三角形的周长和面积以及矩形的周长和面积。本图形计算器有4个页面&#xff1a;1.php图形计算器主页index.php; 2.形状的抽象类shape.class.php; 3三角形计算…

ECMAScript Decorators---装饰器

ECMAScript Decorators---装饰器 Decorators是什么 Decorators可以改变类方法和类实例字段的属性和行为&#xff0c;使我们可以灵活地使用更简单的语法动态实现这些内容&#xff0c;是非侵入式的。---举例&#xff0c;你给手机添加一个外壳罢了&#xff0c;并不影响手机原有的…

php试卷A高质量含答案,php试卷A高质量含答案

《php试卷A高质量含答案》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《php试卷A高质量含答案(4页珍藏版)》请在金锄头文库上搜索。1、装订线得 分评卷人合肥滨湖职业技术学院17-18学年度第二学期PHP期末考试卷(A)班级&#xff1a; 学号&#xff1a; 姓名&#xff1…

旅行报告:JavaOne 2013 –重归荣耀

我已经回来几天了&#xff0c;需要赶上过去几天一直搁置的所有事情。 对我来说&#xff0c;这是一年中最忙的时间。 JavaOne和OpenWorld在旧金山的整整一周。 一个非常简短的旅行报告。 年度ACED简报 你们中许多人都知道我是Oracle社区认可计划&#xff08;称为“ ACE计划 ”&…

ElasticSearch 数据分片

一、ElasticSearch 分片 ElasticSearch集群中有许多个节点(Node)&#xff0c;每一个节点实例就是一个实例&#xff1b;数据分布在分片之间。集群的容量和性能主要取决于分片如何在节点上如何分配。将数据分片是为了提高可处理的容量和易于进行水平扩展&#xff0c;为分片做副本…

Unity3D_(游戏)2D坦克大战 像素版

2D坦克大战 像素版 游戏规则&#xff1a;  玩家通过上、下、左、右移动坦克&#xff0c;空格键发射子弹 敌人AI出身时朝向己方大本营(未防止游戏快速结束&#xff0c;心脏上方三个单位障碍物设为刚体)    当玩家被击杀次数>3  或  心脏被子弹击穿  重新加载游戏…

认识Skeleton Screen【屏幕加载骨架】

一直以来&#xff0c;无论是web还是iOS、android的应用中&#xff0c;为了提升应用的加载等待这段时间的用户感知体验&#xff0c;各种奇门遁甲之术层出不穷。其中&#xff0c;菊花图以及由它衍生各种加载动画是一个非常大的流派&#xff0c;如下图所示&#xff1a;由它衍生而出…

一日三项令人兴奋的Lucene功能

昨天是富有成效的一天&#xff1a;突然&#xff0c;Lucene有了三个令人兴奋的新功能。 表达式模块 昨天提交的第一个功能是新的expressions模块 。 这使您可以使用任意String表达式定义用于排序的动态字段。 内置了对JavaScript解析的支持&#xff0c;但是如果您想创建自己的语…

php date当天,php5中date()获得的时间不是当前时间的解决方法

自php5.10起加入了时区的设置&#xff0c;在php中显示的时间都是格林威治标准时间&#xff0c;因此便与中国的用户会差八个小时。修改php.ini中的 date.timezone 参数&#xff1a;复制代码 代码如下:[Date]; Defines the default timezone used by the date functions;date.tim…

listening for variable changes in javascript

https://stackoverflow.com/questions/1759987/listening-for-variable-changes-in-javascript转载于:https://www.cnblogs.com/wangjixianyun/p/9115336.html

JPA EntityListeners中的Spring注入的Bean

在使用JPA侦听器进行数据库加密中&#xff0c;我讨论了使用JPA EntityListener进行透明加密。 从某种意义上说&#xff0c;这种方法是透明的&#xff0c;因为JPA实体&#xff08;几乎&#xff09;完全不知道正在加密&#xff0c;而JPA EntityListener本身也不知道细节。 有一个…

php sql 去除重复数据,MSSQL_快速删除重复记录,SQL Server如何实现?,如果一张表的数据达到上百万 - phpStudy...

如果一张表的数据达到上百万条&#xff0c;用游标的方法来删除简直是个噩梦&#xff0c;因为它会执行相当长的一段时间……开发人员的噩梦——删除重复记录想必每一位开发人员都有过类似的经历&#xff0c;在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而…

Python运行的方式

Python的运行方式多种多样&#xff0c;下面列举几种: 交互式 在命令行中输入python&#xff0c;然后在>>>提示符后面输入Python语句&#xff0c;这里需要注意: 1 语句前面不能有空格&#xff0c;否则会报错 2 对于符合语句&#xff0c;前面会有...提示符&#xff0c;结…

使用Apache Zookeeper进行协调和服务发现

面向服务的设计已被证明是针对各种不同的分布式系统的成功解决方案。 如果使用得当&#xff0c;它会带来很多好处。 但是随着服务数量的增加&#xff0c;了解部署什么以及部署在何处变得更加困难。 而且&#xff0c;由于我们正在构建可靠且高度可用的系统&#xff0c;因此还需要…

微信小程序无埋点数据采集方案

作者&#xff1a;lxj&#xff0c;点餐终端团队成员前言 相信业务团队对这样的场景不会太陌生&#xff1a;打点需求&#xff1a; 每新上一个功能&#xff0c;数据产品便会同步加上打点需求&#xff0c;当数据打点上线后一段时间&#xff0c;数据产品/业务产品便会针对数据的转化…

php 状态码302,HTTP状态码302、303和307的故事

今日读书&#xff0c;无法理解HTTP302、303、307状态码的来龙去脉&#xff0c;决定对其做深究并总结于本文。《HTTP权威指南》第3章在讲解30X状态码时&#xff0c;完全没有讲清楚为什么要有302、303、307&#xff0c;以及他们的关系&#xff0c;一句“问题出在HTTP/1/1”让我一…

Codeforces 1070A Find a Number(BFS) 2018-2019 ICPC, NEERC, Southern Subregional Contest Problem A

Description You are given two positive integers ddd and sss. Find minimal positive integer nnn which is divisible by ddd and has sum of digits equal to sss.Input The first line contains two positive integers ddd and sss(1≤d≤500,1≤s≤5000)(1≤d≤500,1≤s…

luogu3807 【模板】 卢卡斯定理

题目大意 对于一个很大的$n,m,p$如何求$C_{nm}^m\mod p$&#xff1f; Lucas定理 若$n_i,m_i$分别是$n,m$在$p$进制下第$i$位的数字&#xff0c;则有 $$C_n^m\mod p\prod_{i0}^{\log_p m}C_{n_i}^{m_i}\mod p$$ 求法 按照定理式一个一个求组合数即可。 组合数并不用批量求。故预…