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

What does regex pattern “[\P{L}]+” mean in Java?

本问题已经有最佳答案,请猛点这里访问。

代码:

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

输出:

1
2
3
AAAA
DDDD
DDDD

请注意,它是P{L},而不是P{L}(意思是字母)。我在谷歌上搜索了一下,但一无所获。有人能给我一些提示吗?


您可以在Patternjavadoc中找到解释:

Unicode scripts, blocks, categories and binary properties are written with the \p and \P constructs as in Perl. \p{prop} matches if the input has the property prop, while \P{prop} does not match if the input has that property.

所以它与\p相反。


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

基本上都是"非字母"。

我在API中找不到确切的引用,但是你可以从行为中推断出这个建议,或者说,从\\s\\s中推断出来(在这里有记录)。

编辑(归功于图纳基的眼睛)

这实际上是由文档中的以下语句建议的:

Unicode blocks and categories are written with the \p and \P
constructs as in Perl.