Java正则表达式:非英语字符的不区分大小写匹配

时间:2017-05-02 11:58:54

标签: java regex pattern-matching locale

我正在尝试使用Java中的PatternMatcher类对俄语进行不区分大小写的匹配。以下是文字:

"some text газированных напитков some other text"

以下是我用来匹配文字的模式:

Pattern pattern = Pattern.compile("(?iu)\\b(" + Pattern.quote("напитки") + ")\\b", Pattern.UNICODE_CHARACTER_CLASS);

我希望以下内容返回true,因为它是不区分大小写的比较(напитки vs напитков):

System.out.println(pattern.matcher("some text газированных напитков some other text").find());

但它总是返回false。我尝试过使用其他Pattern常量(例如CASE_INSENSITIVEUNICODE_CASECANON_EQ),但仍会返回false

Java中有没有办法进行这样的比较?甚至可能吗?

2 个答案:

答案 0 :(得分:5)

只需在模式中添加此选项:

Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE

这适用于我所有的cyrrilic病例。我非常广泛地使用它。

答案 1 :(得分:0)

这将正常工作:

Pattern pattern = Pattern.compile("(?iu)\\b(" + Pattern.quote("напитк") + ")\\b");
System.out.println(pattern.matcher("some text газированных \"напитк\"ов some other text").find());