0

我有一个 java 正则表达式模式,它在 Mac OSX 中的 Tomcat7 下完美运行,但在 Amazon Linux(在 Amazon Elastic Beanstalk 上使用)下它不匹配 never

这是模式:

(\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 下,目前无法对其进行测试。

这是测试它的代码: https ://gist.github.com/edpichler/6766187

4

1 回答 1

1

我不认为Tomcat版本会导致不同的结果,所以唯一的区别是JRE版本。

在弹性 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)
于 2013-09-29T06:37:22.100 回答