我正在尝试匹配 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.matches()){
System.out.println("Match!");
}else{
System.out.println("No match");
}
结果显示为“不匹配”。有什么想法吗?
最佳答案
术语“Unicode 字符”不够具体。它将匹配 Unicode 范围内的 每个 字符,因此也匹配“普通”字符。然而,当一个实际上 表示“不在 printable ASCII range 中的字符”时,这个术语经常被使用。
在正则表达式中是 [^\x20-\x7E]
。
boolean containsNonPrintableASCIIChars = string.matches(".*[^\\x20-\\x7E].*");
根据您想如何处理这些信息,这里有一些有用的后续答案:
关于java - 如何在 Java 中匹配 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3103344/