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>/
几个替代拼写似乎也可用,包括 WhiteSpace、WSpace 和它的小写变体,但 not WS.
还有一个内置规则<ws>
,它匹配零个或多个空白字符而不是单个,当然还有\s
,它已经使用了 Unicode 语义。
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>/
几个替代拼写似乎也可用,包括 WhiteSpace、WSpace 和它的小写变体,但 not WS.
还有一个内置规则<ws>
,它匹配零个或多个空白字符而不是单个,当然还有\s
,它已经使用了 Unicode 语义。