Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式:为什么数字[0-9],逗号等不是unicode?_Java_Regex_Unicode - Fatal编程技术网

Java正则表达式:为什么数字[0-9],逗号等不是unicode?

Java正则表达式:为什么数字[0-9],逗号等不是unicode?,java,regex,unicode,Java,Regex,Unicode,上面的代码打印为false,但我希望为true,因为ASCII不是unicode的子集吗?“0”是ASCII的一部分,所以我认为它也应该属于unicode字母 此外,逗号、句点等将打印“false”true,而“a”将打印true。这是因为\\p{L}匹配一个Unicode字母,而您正在匹配一个数字 您可以使用: class Test { public static void main (String[] args) { String regex = "\\p{L

上面的代码打印为false,但我希望为true,因为ASCII不是unicode的子集吗?“0”是ASCII的一部分,所以我认为它也应该属于unicode字母


此外,逗号、句点等将打印“false”true,而“a”将打印true。

这是因为
\\p{L}
匹配一个Unicode字母,而您正在匹配一个数字

您可以使用:

class Test
{
    public static void main (String[] args)
    {
        String regex = "\\p{L}";
        System.out.println("0".matches(regex));
    }
}
匹配Unicode数字或字母

您还应该在正则表达式前面使用
(?U)
,以获得Unicode支持,如下所示:

[\\p{L}\\p{Nd}.,]

我想知道“L”是否代表“字母”。。。你怎么认为?因为它接受字母,但不接受数字。。。再说一次,没有任何研究能赢得更高的投票权。。。可爱。如果您计划匹配Unicode字母和所有ASCII符号,请使用
“[\\p{L}\\p{ASCII}]”
谢谢\\p{N}适用于数字。但是对于逗号(即“,”),我应该使用什么?为什么要添加
(?U)
()<代码>\p{L}和
\p{Nd}
已经是完整的unicode,并且不受
(?U)
的影响。正如javadoc所说:“启用Unicode版本的预定义字符类和POSIX字符类”,例如
\w
(预定义)和
\p{Alpha}
(POSIX)。是的,您是对的@Andreas。无需对
\p{L}
\p{Nd}
使用
(?U)
。但我不太确定点和逗号的unicode变体,所以建议使用它。
String regex = "(?U)[\\p{L}\\p{Nd}.,]+";