如何匹配Java中的unicode字符

ank*_*mal 8 java regex unicode

我试图匹配Java中的unicode字符.

输入字符串: informa

要匹配的字符串: informátion

到目前为止,我试过这个:

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");
    }
Run Code Online (Sandbox Code Playgroud)

它出现了"不匹配".有任何想法吗?

Bal*_*usC 12

术语"Unicode字符"不够具体.它将匹配Unicode范围内的每个字符,因此也匹配"普通"字符.然而,当一个实际上意味着"不在可打印ASCII范围内的字符" 时,经常使用该术语.

用正则表达式来表示[^\x20-\x7E].

boolean containsNonPrintableASCIIChars = string.matches(".*[^\\x20-\\x7E].*");
Run Code Online (Sandbox Code Playgroud)

根据您对此信息的处理方式,以下是一些有用的后续答案:


Aus*_*ick 6

是因为informa它不是一个子串informátion吗?

如果ainforma正则表达式中删除最后一个代码,您的代码将如何工作?