Jakarta-ORO包的正则疑惑
公司项目中使用Jakarta-ORO的类处理正则,我不懂。测试了记录简单的例子,感觉与自己理解的正则区别甚大。网上也没找到此类问题,望高手指点。
System.out.println(new PatternMatcher().matches("0.25", new Perl5Compiler().compile("(\\d[0,2])|(\\d[1,2]\\.\\d[1,4])")));
System.out.println(new PatternMatcher().matches("0.25", new Perl5Compiler().compile("(\\d[1,2]\\.\\d[1,4])|(\\d[0,2])")));
第一个为false,第二个为true;不知道字符“|”为什么没用。
用字符串的matches测试
System.out.println("0.25".matches("(\\d[0,2])|(\\d[1,2]\\.\\d[1,4])")));
System.out.println("0.25".matches("(\\d[1,2]\\.\\d[1,4])|(\\d[0,2])"));
结果都为true;
最匪夷所思的测试在这
System.out.println(new PatternMatcher().matches("我郁闷", new Perl5Compiler().compile("\\w{0,3}")));
System.out.println("我郁闷".matches("\\w{0,3}"));
第一个是true,第二个是false。第二个好理解\w只能匹配[a-zA-Z0-9_],第一个有点违背正则基础了,因为包是兼容perl的正则的。
求大神明鉴。。
正则 Java Perl --------------------编程问答-------------------- 木有大侠光顾吗?
补充:Java , Java EE