黑马程序员技术交流社区

标题: 有关正则表达式的问题 [打印本页]

作者: 任振铭    时间: 2015-10-4 10:19
标题: 有关正则表达式的问题
为什么取反的时候中括号加与不加会产生不同的结果,请帮忙分析一下
public class Text_ZiFuLei {
        public static void main(String[] args) {
                System.out.println("以下两结果不同");
                String regex1 = "[a-z&&^az]";
                System.out.println("a".matches(regex1));
                System.out.println("z".matches(regex1));
                System.out.println("b".matches(regex1));
                System.out.println("C".matches(regex1));
                System.out.println("D".matches(regex1));
                System.out.println("g".matches(regex1));
                System.out.println("@".matches(regex1));
                System.out.println("-------------------");

                String regex2 = "[a-z&&[^az]]";
                System.out.println("a".matches(regex2));
                System.out.println("z".matches(regex2));
                System.out.println("b".matches(regex2));
                System.out.println("C".matches(regex2));
                System.out.println("D".matches(regex2));
                System.out.println("g".matches(regex2));
                System.out.println("@".matches(regex2));
                System.out.println("-------------------");
                System.out.println("以下两结果相同");
                String regex3 = "[a-z&&[az]]";
                System.out.println("a".matches(regex3));
                System.out.println("z".matches(regex3));
                System.out.println("b".matches(regex3));
                System.out.println("C".matches(regex3));
                System.out.println("D".matches(regex3));
                System.out.println("g".matches(regex3));
                System.out.println("@".matches(regex3));
                System.out.println("-------------------");
                String regex4 = "[a-z&&az]";
                System.out.println("a".matches(regex4));
                System.out.println("z".matches(regex4));
                System.out.println("b".matches(regex4));
                System.out.println("C".matches(regex4));
                System.out.println("D".matches(regex4));
                System.out.println("g".matches(regex4));
                System.out.println("@".matches(regex4));
               
        }
}
作者: 任振铭    时间: 2015-10-4 10:43
是不是因为去掉了"[]",^这个符号就相当于逻辑运算符中的异或了
作者: 风语    时间: 2015-10-4 11:00
                String regex1 = "[a-z&&^az]";
                System.out.println("a".matches(regex1));
                你不加括号就相当与你判断a-z和(^这个符号和a,z)的交集了
作者: 任振铭    时间: 2015-10-4 11:23
风语 发表于 2015-10-4 11:00
String regex1 = "[a-z&&^az]";
                System.out.println("a".matches(regex1) ...

为什么会这样
作者: 风语    时间: 2015-10-4 11:33
任振铭 发表于 2015-10-4 11:23
为什么会这样

^这个符号只有括号起来才有特殊的意思把,不然的话就是普通的符号,就像是字符t,加了个\  就不是普通的字符了
作者: 任振铭    时间: 2015-10-4 17:53
风语 发表于 2015-10-4 11:33
^这个符号只有括号起来才有特殊的意思把,不然的话就是普通的符号,就像是字符t,加了个\  就不是普通的 ...

这样啊,有可能
作者: zrc203    时间: 2015-10-4 19:33
学习了,正则表达式不是很懂
作者: tianweidong    时间: 2015-10-4 19:38
学习中。。。。。。。。。。。。
作者: 任振铭    时间: 2015-10-5 10:42
zrc203 发表于 2015-10-4 19:33
学习了,正则表达式不是很懂

马上讲到了,正好认真听一下
作者: 任振铭    时间: 2015-10-5 10:43
tianweidong 发表于 2015-10-4 19:38
学习中。。。。。。。。。。。。

学习中........
作者: 任振铭    时间: 2015-10-5 11:24
tianweidong 发表于 2015-10-4 19:38
学习中。。。。。。。。。。。。

学习中........




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2