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