正则表达式模式“[\\PL]+”在 Java 中是啥意思? [复制]

Posted

技术标签:

【中文标题】正则表达式模式“[\\\\PL]+”在 Java 中是啥意思? [复制]【英文标题】:What does regex pattern "[\\PL]+" mean in Java? [duplicate]正则表达式模式“[\\PL]+”在 Java 中是什么意思? [复制] 【发布时间】:2016-07-18 16:06:14 【问题描述】:

代码:

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

输出:

AAAA
DDDD
DDDD

请注意它是PL 而不是pL(表示字母)。我用谷歌搜索但什么也没找到。那么有人可以给我一些提示吗?

【问题讨论】:

请参阅 this question 以获得详细描述该主题的网站的链接。 【参考方案1】:

可以在PatternJavadoc中找到解释:

Unicode 脚本、块、类别和二进制属性使用 \p\P 结构编写,就像在 Perl 中一样。 \pprop 如果输入有属性 prop 则匹配,而\Pprop 不匹配如果输入有该属性。

所以它与\p相反。

【讨论】:

【参考方案2】:

简单:与\\pL 正好相反。

基本上都是“非字母”。

我在API 中找不到确切参考,但您可以从行为中推断出建议,或者说,\\s vs \\S 记录在那里)。

编辑(感谢Tunaki的眼睛)

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

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

【讨论】:

有相关的文档或参考资料吗? @Sayakiss 实际上,这在整个互联网上都有很多。 regular-expressions.info/unicode.html您可以将属于“字母”类别的单个字符与\pL 匹配。您可以将不属于该类别的单个字符与\PL 匹配。

以上是关于正则表达式模式“[\\PL]+”在 Java 中是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 PL/SQL Developer Find & Replace 中使用正则表达式模式时,如何访问匹配的对象以进行替换?

java正则表达式中是啥意思

(?!a)0 是啥?在 Java 正则表达式中是啥意思?

Java - \pL [\x00-\x7F]+ 正则表达式无法使用 String.match 获取非英文字符

Python 正则表达式拆分 PL/SQL 指令

为了对存储在 Oracle db 中的数据运行搜索查询,在 PL/SQL 中使用 REGEXP 是不是比在 Java 正则表达式中获取所有数据并过滤它更快?