Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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中\p{Alpha}和\p{L}之间的差异_Java_Regex - Fatal编程技术网

Java中\p{Alpha}和\p{L}之间的差异

Java中\p{Alpha}和\p{L}之间的差异,java,regex,Java,Regex,据我所知,\p{L}包括来自Unicode符号的所有字母,\p{Alpha}稍有相同,但仅适用于拉丁字母(ASCII)。在我的工作中,我有“A”拉丁语和“A”西里尔语,而旧java代码中的\p{Alpha}与西里尔语符号不匹配。当我测试它时,\p{L}是我的解决方案。对于这种情况,你们能给我一些建议吗?我应该在java代码中使用什么?在本页上,对java代码使用\p{Alpha}。实际上,\p{Alpha}是一个POSIX字符类实现,仅当与(或(?U)标志)结合使用时,才会匹配扩展字符,\p{L

据我所知,
\p{L}
包括来自Unicode符号的所有字母,
\p{Alpha}
稍有相同,但仅适用于拉丁字母(ASCII)。在我的工作中,我有“A”拉丁语和“A”西里尔语,而旧java代码中的
\p{Alpha}
与西里尔语符号不匹配。当我测试它时,
\p{L}
是我的解决方案。对于这种情况,你们能给我一些建议吗?我应该在java代码中使用什么?在本页上,对java代码使用
\p{Alpha}

实际上,
\p{Alpha}
是一个POSIX字符类实现,仅当与(或
(?U)
标志)结合使用时,才会匹配扩展字符,
\p{L}
将始终匹配BMP平面中的所有Unicode字母。注意:您可以将
\p{L}
写成
\pL
\p{IsL}

请参阅更多:

\p{L}
\p{IsL}
都表示Unicode字母的类别

POSIX字符类(仅限US-ASCII)
\p{Lower}
小写字母字符:
[A-z]

\p{Upper}
大写字母字符:
[A-Z]

\p{Alpha}
字母字符:
[\p{Lower}\p{Upper}]

请看一下:

可能的重复
String l = "Abc";
String c = "Абв";
System.out.println(l.matches("\\p{Alpha}+"));     // => true
System.out.println(c.matches("\\p{Alpha}+"));     // => false
System.out.println(c.matches("(?U)\\p{Alpha}+")); // => true
System.out.println(l.matches("\\p{L}+"));         // => true
System.out.println(c.matches("\\p{L}+"));         // => true