List perl6(模式)*返回的列表与m:global/(模式)/返回的列表有何不同?
Perl6在使用(pattern)*或(pattern)+捕获时返回一个列表,我会想象在使用:g副词时会发生类似的情况。但是,使用这两种方法返回的列表并不相同。这些文件没有提供更多细节。是否有其他来源可以找到更多信息 以下是一个例子:List perl6(模式)*返回的列表与m:global/(模式)/返回的列表有何不同?,list,match,global,raku,List,Match,Global,Raku,Perl6在使用(pattern)*或(pattern)+捕获时返回一个列表,我会想象在使用:g副词时会发生类似的情况。但是,使用这两种方法返回的列表并不相同。这些文件没有提供更多细节。是否有其他来源可以找到更多信息 以下是一个例子: To exit type 'exit' or '^D' > my $a = "bananananananana"; bananananananana > my $m = ($a ~~ m/ (an)+ /) 「ananananananan」 0 =&
To exit type 'exit' or '^D'
> my $a = "bananananananana";
bananananananana
> my $m = ($a ~~ m/ (an)+ /)
「ananananananan」
0 => 「an」
0 => 「an」
0 => 「an」
0 => 「an」
0 => 「an」
0 => 「an」
0 => 「an」
> say $m[0]
[「an」 「an」 「an」 「an」 「an」 「an」 「an」]
> say $m[0][0]
「an」
> say $m[0][2]
「an」
> my $m = ($a ~~ m:g/ (an)+ /)
(「ananananananan」
0 => 「an」
0 => 「an」
0 => 「an」
0 => 「an」
0 => 「an」
0 => 「an」
0 => 「an」)
> say $m[0];
「ananananananan」
0 => 「an」
0 => 「an」
0 => 「an」
0 => 「an」
0 => 「an」
0 => 「an」
0 => 「an」
> say $m[0][1]
Nil
> say $m[0][0]
[「an」 「an」 「an」 「an」 「an」 「an」 「an」]
> say $m[0][0][1]
「an」
> my $n = ($a ~~ m:g/ (an) /)
(「an」
0 => 「an」 「an」
0 => 「an」 「an」
0 => 「an」 「an」
0 => 「an」 「an」
0 => 「an」 「an」
0 => 「an」 「an」
0 => 「an」)
> say $n[0]
「an」
0 => 「an」
> say $n[0][0]
「an」
>
导致这些不同输出的规则包括:
匹配正则表达式一次,如果匹配成功,则返回m/
对象;如果未成功,则返回Match
Nil
根据匹配的频率重复匹配正则表达式,并返回零个或多个m:g/
对象的Match
列表
- 正则表达式中的
导致一个位置捕获,它本身就是一个()
匹配对象
- 正则表达式中的
导致一个位置捕获,这是一个包含零个或多个()*
匹配对象的
列表
- 正则表达式中的
导致一个位置捕获,它是一个或多个()+
匹配对象的
列表
- 在父对象
匹配
对象上使用
或作为[]
,$0
,$1
提供位置捕获$2
返回匹配的m/(an)+/
,它有一个位置捕获,是七个「anananan
匹配的列表「an
返回七个不包含任何捕获的m:g/an/
匹配项的列表
返回七个m:g/(an)/
匹配项的列表,每个匹配项都有一个位置捕获,即
匹配项
say
打印列表和匹配项摘要的方式造成的。特别是对于最后一个示例,
say
将结果打印为:
(「an」
0=>,安
0=>,安
0=>,安
0=>,安
0=>,安
0=>,安
0=>(安)
…这实际上是七个匹配对象的列表,每个对象都是
,安
0=>an
Aha!!!谢谢smls!!!语言的美妙味道和细微差别需要时间去品味和消化:-)谢谢!!!