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

Say*_*iss 6 java regex

码:

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

输出:

AAAA
DDDD
DDDD
Run Code Online (Sandbox Code Playgroud)

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

Tun*_*aki 11

你可以在PatternJavadoc 找到解释:

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

所以它与之相反\p.


Men*_*ena 5

很简单:它与\\p{L}.

基本上都是“非字母”。

我无法找到一个准确的参照API,但你可以从行为推断或建议,说,\\sVS \\S(这记录都在这里)。

编辑感谢 Tunaki有眼睛)

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

Unicode 块和类别是用 \p 和 \P 结构编写的,就像在 Perl 中一样。