Java模式和匹配器随机中断

时间:2016-09-27 19:39:57

标签: java pattern-matching

我正在尝试阅读浏览器语言并从返回的长字符串中获取xx-XX(例如:en-US)的首次出现。

final String delimiter = "([a-z]{2})-([a-z]{2})";
final String language = (request.getHeader("Accept-Language")).toLowerCase();
String locale = "";

Pattern pattern = Pattern.compile(delimiter);
Matcher matcher = pattern.matcher(language);

if(matcher.find()) {
    locale = matcher.group(0); 
}   

字符串locale获得如下值:

de-DE,de;q=0.8,en-AU;q=0.6,en;q=0.4,en-US;q=0.2,en-GB;q=0.2,en-NZ;q=0.2,fr-FR;q=0.2,fr;q=0.2,en-CA;q=0.2

我想要获得第一个,在这种情况下'de-DE'。一些随机的时间它因我无法理解的原因而中断。应用程序本身中断。构建工作正常。我已经跟踪了这段代码(删除了页面上的其他内容)。仍不确定问题是什么。有什么提示吗?

1 个答案:

答案 0 :(得分:1)

像这样的正则表达式:

([a-z]{2})(\-[A-Z]{2})?

在这种情况下,第二部分是可选的。

This page可以帮助您测试regexp。