正则表达式模式“[\\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】:可以在Pattern
Javadoc中找到解释:
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 - \pL [\x00-\x7F]+ 正则表达式无法使用 String.match 获取非英文字符
为了对存储在 Oracle db 中的数据运行搜索查询,在 PL/SQL 中使用 REGEXP 是不是比在 Java 正则表达式中获取所有数据并过滤它更快?