A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class demonn {

  2. public static void demo1() {
  3.                 //叠词 快快乐乐,高高兴兴
  4.                 String regex = "(.)\\1(.)\\2";                                                       
  5.                 System.out.println("快快乐乐".matches(regex));//true
  6.                 System.out.println("快乐乐乐".matches(regex));//false
  7.                 System.out.println("高高兴兴".matches(regex));//true
  8.                 System.out.println("死啦死啦".matches(regex));//false
  9.                
  10.                 //叠词 死啦死啦,高兴高兴
  11.                 String regex2 = "(..)\\1";
  12.                 System.out.println("死啦死啦".matches(regex2));//true
  13.                 System.out.println("高兴高兴".matches(regex2));//true
  14.                 System.out.println("快快乐乐".matches(regex2));//false
  15.         }
  16. public static void main(String[] args) {
  17.                 demo1();
  18. }
  19. }
复制代码
String regex = "(.)\\1(.)\\2";
String regex2 = "(..)\\1";

这里面的\\1和\\2代表的意思是把第一组复制一遍,第二组复制一遍,那么\\是复制还是\\1是复制?如果\\1是复制,那么是不是\\2就是复制两次?但是\\2表示的又是复制第二组,谁能给解释下具体的原理呢?

3 个回复

倒序浏览
\d是数字,但是字符串中\是转义字符,所以表达\1或者\2要写作\\1和\\2,数字表示匹配第几个括号,比如下面这个例子
String regex = "(.)(.)\\2\\1";
System.out.println("死啦啦死".matches(regex));//true
回复 使用道具 举报
明天我也要学习这个了,我去预习了
回复 使用道具 举报
厉害,解决了我一大疑惑
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马