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”);}
匹配的子序列是“唯一不是重复但唯一”
重复单词:唯一
匹配的子序列为“重复是重复的”
重复单词:Duplicate
注意:这不是使用正则表达式查找重复单词的好方法。从上面的示例中,第一个“重复项”不匹配。
最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。
相关文章
- 浅谈JAVA中类的几种关系
- 关于eclipse软件中jar打包后创建对象出错的问题---Exception in thread “main“ java.lang.Error: Unresolved compilation....
- Java面试题:请解释Java中的继承和多态?
- Java多线程系列--“基础篇”03之 Thread中start()和run()的区别
- wireshark利用正则表达式过滤http协议中的jpg png zip等无用的数据包
- 【java】SpringBoot中通过自定义配置类实现设置系统的默认欢迎页
- pycharm中引用cv2没有智能提示通过重新配置解释器解决的办法
- java类中获取自定义yml文件中的属性值
- java中获取当前系统时间以及过半小时之后的时间的实现
- java中获取当前时间的前后指定的时间