Java 正则表达式不匹配(俄语)

标签 java regex

尝试匹配字符串“Манихина Галина Владимировна”和其他相同格式的字符串。也就是三个字的专有名词。我是正则表达式的新手,不确定我的陈述有什么问题。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String [] args){
        String temp = "Манихина Галина Владимировна";
        Pattern pattern = Pattern.compile("^[а-я]+\\s[а-я]+\\s[а-я]+$", Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(temp);
        if (matcher.find()){
            System.out.println(matcher.group(0));
        }
    }
}

最佳答案

根据 Java documentation文档正则表达式与 unicode 不匹配:

By default, case-insensitive matching assumes that only characters in the US-ASCII charset are being matched

为了使您的代码正常工作,请添加 UNICODE_CASE标志:

Pattern pattern = Pattern.compile("^[а-я]+\\s[а-я]+\\s[а-я]+$",
    Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);

关于Java 正则表达式不匹配(俄语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48453428/

相关文章:

java - 为什么我的 Postgres 游标内存不足?

java - 如何在Hsql中进行外连接

java - SWT StyledText - 带有 MeasureItem 监听器的表跳转到顶部

java - 使用变量类名而不是大量的 if 子句?

javascript - 如何使正则表达式仅匹配每个匹配项的第一次出现?

Python 正则表达式选择现在完成时的动词

regex - 否定正则表达式以使用 MVC 验证属性

java - 成功编码后无法解码\u0000

javascript - 如何检测波斯字符?

php - 检查字符串是否同时包含空格或特殊字符