我有一个 java 正则表达式模式,它在 Mac OSX 中的 Tomcat7 下完美运行,但在 Amazon Linux 下(在 Amazon Elastic Beanstalk 上使用)它永远不会匹配。
这是模式:
(\d\.)(([^\d\s])([a-z/\s]*))
下面是一些文本示例:
1.AAAA/BBBBBB
这是Java代码:
Pattern pattern = Pattern.compile(PATTERN, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
//....
}
我不明白这方面的平台差异是什么。有人吗?
已编辑
更多信息:同一个 .war 文件,在我的 Windows、Mac OS 平台下运行完美,但在 Amazon Beanstalk 和 Ubuntu Linux 下不行。 我认为@study 是对的,也许是因为 OpenJDK,但我现在在 windows 下,目前无法测试它。
最佳答案
我不认为 Tomcat 版本会导致不同的结果,所以唯一的区别是 JRE 版本。
在 elastic beanstalk tomcat 7 x64 中,您使用的是 OpenJDK 1.6.0_24
[ec2-user@ip-10-121-5-162 ~]$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (amazon-52.1.11.4.46.amzn1-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
在 OS X 10.8.5(带有 OS X 2013-004 和 10.6 更新)中,您使用的是 Oracle JDK 1.6.0_51
server:bin study$ java -version
java version "1.6.0_51"
Java(TM) SE Runtime Environment (build 1.6.0_51-b11-457-11M4509)
Java HotSpot(TM) 64-Bit Server VM (build 20.51-b01-457, mixed mode)
关于Java 正则表达式模式在 Linux (Amazon Beanstalk) 下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19066631/