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

dj1*_*121 3 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));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 7

根据Java 文档文档,regexp与unicode不匹配:

默认情况下,不区分大小写的匹配假定只匹配US-ASCII字符集中的字符

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

Pattern pattern = Pattern.compile("^[?-?]+\\s[?-?]+\\s[?-?]+$",
    Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
Run Code Online (Sandbox Code Playgroud)