Perl 5 和 Perl 6 中的 Unicode 属性 "Space"

Unicode property "Space" in Perl 5 and Perl 6

unicode-属性 \p{Space} 是 Perl5 扩展吗?

在 Perl5 中 Space 匹配所有 white-spaces

my $s = "one\ttwo\nthree";
$s =~ s/\p{Space}/*/g;
say $s;

# one*two*three

而在 Per6 中它可能只匹配一个简单的 space

my $s = "one\ttwo\nthree";
$s.=subst( /<:Space>/, '*', :g );
say $s;

# one     two
# three

它不是真正的扩展名,而是另一个 Unicode 属性、\p{White_Space} 的 shorthand 名称。这在联机帮助页 perluniprops.

中有详细记录

我不知道这里的 Perl6 人在做什么。

制表符属于 Control 类别,而不是 Space。您感兴趣的 属性 实际上称为 White_Space,这就是您需要在 Perl 6 中使用的内容:

say so "\t" ~~ /<:White_Space>/

几个替代拼写似乎也可用,包括 WhiteSpaceWSpace 和它的小写变体,但 not WS.

还有一个内置规则<ws>,它匹配零个或多个空白字符而不是单个,当然还有\s,它已经使用了 Unicode 语义。