Java支持哪些内置正则表达式字符类?

7

涉及使用类似于 "\\p{someCharacterClass}" 的模式。
我见过/使用了一些:

  • Lower(小写)
  • Upper(大写)
  • InCombiningDiacriticalMarks(组合变音符号)
  • ASCII

什么是所有支持的内置字符类的明确列表?文档在哪里?它们确切的含义是什么?

编辑...

似乎有很多答案都是“RTFM”,参考 Pattern 的 javadoc。这是我在提问之前首先查看的地方。只要大家清楚,Pattern 的 javadoc 没有提到上面列出的任何类。

“正确”的答案将在页面上提到 “InCombiningDiacriticalMarks”,而不会是对 “Unicode Standards” 的模糊引用。


4
你有查阅过Pattern文档吗? - Greg Hewgill
5
是的,我已经检查过了...你呢?那是我首先查看的地方,但那里没有提到上面的内容,也没有任何链接指向相关页面。 - Bohemian
@GregHewgill 好的,很棒。那么列出所有上述内容及其含义的页面链接是什么? - Bohemian
“Blocks.txt”文件记录了代码点范围,因此可以获取该范围的代码图表:http://www.unicode.org/charts/PDF/UE0000.pdf(我也不知道这些“标签”有什么用途)。 - Greg Hewgill
@GregHewgill 好的,回答不错。如果您在答案中包含这个,我会接受它!感谢您的坚韧。 - Bohemian
显示剩余4条评论
5个回答

11
Pattern文档中的“Unicode支持”章节说明道:

受支持的类别是由Character类指定的版本中的Unicode标准支持的类别。类别名称是在标准中定义的,包括标准和非标准的名称。Pattern支持的块名称是由UnicodeBlock.forName接受并定义的有效块名称。

UnicodeBlock.forName文档中说明道:

块名称由Unicode标准确定。

http://unicode.org中有一个常见问题解答(FAQ)“我在哪里可以找到Unicode块的明确列表?”

答:Unicode块及其名称是Unicode标准的一个规范部分。确切的列表始终在Unicode字符数据库的一个文件中维护,即 Blocks.txt

最后,在Blocks.txt中有以下内容:
0300..036F; Combining Diacritical Marks
这些字符可以在组合用途的变音符号代码图表中找到(来自Unicode 6.0字符代码图表)。

1

0

这个页面提供了一些流行类别的好细节,例如:

  • \p{L}\p{Letter}:任何语言中的任何字母。
  • \p{M}\p{Mark}:旨在与另一个字符组合的字符(例如,重音符号、变音符号、封闭框等)。
  • \p{N}\p{Number}:任何脚本中的任何数字字符。

0

是的,我在发布这个问题之前阅读了Pattern javadoc。请问列出所有类及其含义的页面的确切链接是什么? - Bohemian

-1

在 javadocs 中查找 Pattern 类。


是的,我在发布这个问题之前阅读了Pattern javadoc。请问列出所有类及其含义的页面的确切链接是什么? - Bohemian
这个在我发布的javadoc链接里面。那就是精确的页面,除非我没有理解你的问题。 - duffymo
那个页面上的“CombiningDiacriticalMarks”在哪里?(这是一个修辞问题。它不在那里)。我想要链接到完整列表和每个支持字符类的定义。 - Bohemian
版主请注意:这是另一个我的回答在多年后被单独点踩的情况。页面上的其他回答都没有被点踩。我不禁觉得这是有针对性的。 - duffymo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接