Perl 6字符匹配的Unicode属性及全属性获取方法问询
关于Perl 6字符的Unicode属性查询问题
首先,单个Perl 6字符能够匹配的Unicode属性涵盖多个大类,主要包括这些:
- 通用类别:也就是
.uniprop默认返回的基础分类,比如Letter、Lowercase_Letter、Number这类 - 派生属性:像你提到的
ID_Start、ID_Continue,还有White_Space、Alphabetic、Dash这类从基础属性推导而来的属性 - 脚本属性:标识字符所属的书写脚本,比如
Latin、Han、Arabic - 区块属性:字符所在的Unicode区块,比如
Basic Latin、CJK Unified Ideographs - 特殊功能属性:比如
Quotation_Mark、Math_Symbol这类功能性分类
你说.uniprop仅返回通用类别,其实是没用到它的复数版本——.uniprops方法!这个方法专门用来返回字符的所有Unicode属性列表,完全能满足你获取包括派生属性在内的全部属性的需求。
举个实际例子,查询小写字母a的所有属性:
my $char = 'a'; say $char.uniprops;
运行后你会看到输出包含ID_Start、ID_Continue、Alphabetic、Latin等所有该字符匹配的属性,和正则表达式中\p{...}能匹配的属性完全对应。
如果想筛选特定类型的属性,.uniprops还支持参数:
- 仅查看派生属性:
say $char.uniprops: :derived; - 仅查看脚本属性:
say $char.uniprops: :script; - 仅查看区块属性:
say $char.uniprops: :block;
另外,如果你需要更结构化的属性信息(比如属性名和对应的值/描述),可以用.uniprop-table方法,它会返回一个哈希表:
say $char.uniprop-table;
这个能帮你更清晰地梳理每个属性的具体内容。
内容的提问来源于stack exchange,提问作者brian d foy
相关产品推荐
相关产品推荐

