黑马程序员技术交流社区
标题:
正则表达式分组(.)\\1(.)\\2是什么意思
[打印本页]
作者:
Laopozini123
时间:
2016-3-25 22:32
标题:
正则表达式分组(.)\\1(.)\\2是什么意思
class demonn {
public static void demo1() {
//叠词 快快乐乐,高高兴兴
String regex = "(.)\\1(.)\\2";
System.out.println("快快乐乐".matches(regex));//true
System.out.println("快乐乐乐".matches(regex));//false
System.out.println("高高兴兴".matches(regex));//true
System.out.println("死啦死啦".matches(regex));//false
//叠词 死啦死啦,高兴高兴
String regex2 = "(..)\\1";
System.out.println("死啦死啦".matches(regex2));//true
System.out.println("高兴高兴".matches(regex2));//true
System.out.println("快快乐乐".matches(regex2));//false
}
public static void main(String[] args) {
demo1();
}
}
复制代码
String regex = "(.)\\1(.)\\2";
String regex2 = "(..)\\1";
这里面的\\1和\\2代表的意思是把第一组复制一遍,第二组复制一遍,那么\\是复制还是\\1是复制?如果\\1是复制,那么是不是\\2就是复制两次?但是\\2表示的又是复制第二组,谁能给解释下具体的原理呢?
作者:
oassuperhan
时间:
2016-3-26 16:30
\d是数字,但是字符串中\是转义字符,所以表达\1或者\2要写作\\1和\\2,数字表示匹配第几个括号,比如下面这个例子
String regex = "(.)(.)\\2\\1";
System.out.println("死啦啦死".matches(regex));//true
作者:
sxuing
时间:
2016-3-26 16:46
明天我也要学习这个了,我去预习了
作者:
58896
时间:
2016-12-13 14:28
厉害,解决了我一大疑惑
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2