为什么 unicode 引号出现在 perl6 中的正则表达式捕获周围?
Why do unicode quotes appear around a regex capture in perl6?
我正在使用 rakudo,以及以下代码:
"foo" ~~ m/(foo)/;
say [=10=];
我认为输出是:
foo
但是,我得到:
「foo」
(那是 foo 周围有一些奇怪的 unicode-y 引号。)
我在文档中找不到任何关于此的内容,而且我似乎无法删除这些引号。这里发生了什么?
编辑:做
say "[=13=]";
而是去掉引号,
print [=14=];
print "[=14=]";
也这样做。所以我猜捕获实际上不是一个字符串,并且在它周围加上双引号以某种方式将它变成一个字符串? (顺便说一句,$0.gist 产生“foo”,而不是 foo。)任何人都可以指出我可以了解此行为的文档部分吗?我来自 Perl,并且非常困惑。
一个 capture returns a Match 字符串化为您发现的匹配字符串。
An unquantified capture produces a Match object.
顺便说一句,你可以看到变量实际持有的类型 .WHAT
:
say [=10=].WHAT;
(Match)
say
子调用 .gist
方法。相比之下,print
子调用 .Str
方法。还有一个 put
sub ("print using terminator"),它调用 .Str
然后换行。这可能是您想使用的而不是 say
.
.gist
和 .Str
方法是将对象变成 Str
的两种不同方法。 .gist
方法提供了一种对传达其结构的数据的人性化表示。如果您 .gist
一个包含一堆捕获的复杂 Match
,它将显示这些捕获(并使用缩进显示匹配树)。相比之下,.Str
不会尝试重现结构;在 Match
对象上,它只给出 Match
涵盖的文本。
因此,总结一下您 运行 所使用的 Perl 5 和 Perl 6 语言之间的区别:
- 捕获是
Match
对象,而不是字符串(这就是语法可以生成解析树的原因)
- Perl 6 中的
say
函数调用 .gist
- Perl 6 中的
put
函数大部分等同于 Perl 5 中的 say
函数
最后,选择方引号是因为它们相对罕见,因此不太可能出现在任何用户数据中,因此可以显示捕获的数据,而这些数据中不太可能需要任何转义序列。这提供了有关 Match
的更易于阅读的概述,这是 .gist
.
的目标
我正在使用 rakudo,以及以下代码:
"foo" ~~ m/(foo)/;
say [=10=];
我认为输出是:
foo
但是,我得到:
「foo」
(那是 foo 周围有一些奇怪的 unicode-y 引号。)
我在文档中找不到任何关于此的内容,而且我似乎无法删除这些引号。这里发生了什么?
编辑:做
say "[=13=]";
而是去掉引号,
print [=14=];
print "[=14=]";
也这样做。所以我猜捕获实际上不是一个字符串,并且在它周围加上双引号以某种方式将它变成一个字符串? (顺便说一句,$0.gist 产生“foo”,而不是 foo。)任何人都可以指出我可以了解此行为的文档部分吗?我来自 Perl,并且非常困惑。
一个 capture returns a Match 字符串化为您发现的匹配字符串。
An unquantified capture produces a Match object.
顺便说一句,你可以看到变量实际持有的类型 .WHAT
:
say [=10=].WHAT;
(Match)
say
子调用 .gist
方法。相比之下,print
子调用 .Str
方法。还有一个 put
sub ("print using terminator"),它调用 .Str
然后换行。这可能是您想使用的而不是 say
.
.gist
和 .Str
方法是将对象变成 Str
的两种不同方法。 .gist
方法提供了一种对传达其结构的数据的人性化表示。如果您 .gist
一个包含一堆捕获的复杂 Match
,它将显示这些捕获(并使用缩进显示匹配树)。相比之下,.Str
不会尝试重现结构;在 Match
对象上,它只给出 Match
涵盖的文本。
因此,总结一下您 运行 所使用的 Perl 5 和 Perl 6 语言之间的区别:
- 捕获是
Match
对象,而不是字符串(这就是语法可以生成解析树的原因) - Perl 6 中的
say
函数调用.gist
- Perl 6 中的
put
函数大部分等同于 Perl 5 中的say
函数
最后,选择方引号是因为它们相对罕见,因此不太可能出现在任何用户数据中,因此可以显示捕获的数据,而这些数据中不太可能需要任何转义序列。这提供了有关 Match
的更易于阅读的概述,这是 .gist
.