正则表达式模式“[\\ P {L}] +”在Java中意味着什么?

时间:2016-03-30 14:52:42

标签: java regex

代码:

Arrays.asList("AAAA DDDD, DDDD".split("[\\P{L}]+")).forEach(System.out::println);

输出:

AAAA
DDDD
DDDD

请注意它是P{L}而不是p{L}(表示字母)。我用Google搜索但却一无所获。那么有人可以给我一些暗示吗?

2 个答案:

答案 0 :(得分:8)

您可以在Pattern Javadoc中找到解释:

  

Unicode脚本,块,类别和二进制属性是使用\p\P结构编写的,如Perl中所示。如果输入具有属性prop,则\p{prop}匹配,而如果输入具有该属性,则\P{prop}不匹配。

所以它与\p相反。

答案 1 :(得分:3)

简单:它与\\p{L}相反。

基本上所有“非字母”。

我在API找不到完全引用,但您可以根据行为推断出建议,或者说\\s vs \\S 记录在那里)。

修改(感谢Tunaki有眼睛)

这实际上是由文档中的以下声明建议的:

  

Unicode块和类别使用\ p和\ P编写   在Perl中构造。