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