Java 正则表达式 : Case insensitive matching for non English characters

标签 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),但是,它仍然返回

Java 中有什么方法可以进行这种比较吗?有可能吗?

最佳答案

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

Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE

这在我所有的西里尔语案例中都有效。我非常广泛地使用它。

关于Java 正则表达式 : Case insensitive matching for non English characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43737308/

相关文章:

scheme - 方案: pattern matching syntax

java - 如何从 Java 文件中删除字符?

java - 将 lambda 表达式替换为 IntelliJ IDEA 中的等效代码

java - 带有内省(introspection)的高级消息格式

java - 使用 java.util.regex 的 HTML 正则表达式

regex - GA Regex过滤器-过滤PPC流量并将其替换为“PPC”

PostgreSQL - 模式匹配 - 字符串到子字符串

java.lang.IncompleteClassChangeError : Implementing class Error/Hibernate

php - 如何使用正则表达式拆分文件扩展名

java - 强制 tableswitch 而不是 lookupswitch