如何在Java中匹配unicode字符
我试图在Java中匹配unicode字符 输入字符串:如何在Java中匹配unicode字符,java,regex,unicode,Java,Regex,Unicode,我试图在Java中匹配unicode字符 输入字符串:informa 要匹配的字符串:通知 到目前为止,我已经尝试过: Pattern p= Pattern.compile("informa[\u0000-\uffff].*", (Pattern.UNICODE_CASE|Pattern.CANON_EQ|Pattern.CASE_INSENSITIVE)); String s = "informátion"; Matcher m = p.matcher(s); if(m
informa
要匹配的字符串:通知
到目前为止,我已经尝试过:
Pattern p= Pattern.compile("informa[\u0000-\uffff].*", (Pattern.UNICODE_CASE|Pattern.CANON_EQ|Pattern.CASE_INSENSITIVE));
String s = "informátion";
Matcher m = p.matcher(s);
if(m.matches()){
System.out.println("Match!");
}else{
System.out.println("No match");
}
结果是“没有对手”。有什么想法吗?是因为
informa
根本不是information
的子串吗
如果从正则表达式的informa
中删除最后一个a
,代码将如何工作?术语“Unicode字符”不够具体。它将匹配Unicode范围内的每个字符,因此也是“普通”字符。然而,当一个人实际指的是“不在列表中的字符”时,这个术语经常被使用
在正则表达式中,它将是[^\x20-\x7E]
boolean containsNonPrintableASCIIChars = string.matches(".*[^\\x20-\\x7E].*");
根据您希望如何处理这些信息,以下是一些有用的后续回答:
String normalized = java.text.Normalizer.normalize(textToSearch, java.text.Normalizer.Form.NFD);
String withoutDiacritical = normalized.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
// Search code goes here...
要了解有关NFD的更多信息,请执行以下操作: