当前位置:编程学习 > JAVA >>

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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,