如何在Raku regex
中插入条件代码正则表达式作为其Perl正则表达式的模拟
my $F = 1;
'foobarbar' =~ / (?(?{ $F }) foo | bar ) bar /x ;
请帮助后,努力了一天,无济于事,谢谢。
my $F = 1;
'foobarbar' ~~ / (<?{ $F }> foo | bar ) bar / ;
say $/; # use `say` to get a "human friendly" `gist` of a value
显示:
「foobar」
0 => 「foo」
而:
my $F = 0;
'foobarbar' ~~ / (<?{ $F }> foo | bar ) bar / ;
put $/; # use `put` to get a simple computer stringification of a value
显示:
barbar
请帮助后,努力了一天,无济于事,谢谢。
非常欢迎您在SO继续在这里提问。我们将尽最大努力在您提问的同一天回答,您提问的问题和我们提供的答案将对每个人都有帮助。所以,感谢您的提问,并继续提问。也就是说,有更快的方法可以得到答案,而且它们通常比我们在这里提供的答案更好:
>
“聊天”(即使您不喜欢参与实时讨论,也可以阅读下面的聊天日志。)
如果你喜欢实时讨论,有IRC、Disord等频道。
您可以立即实时提问或回答问题,或者更普遍地享受自己,方法是单击网页,该网页将带您进入#raku-初学者
IRC频道,访问Raku新手“聊天”频道。如果有Rakoons在附近(我们目前主要是居住在欧洲或US的讲英语的人,尽管这有望在未来几年扩大),你通常会在几分钟内得到友好的参与。
还有其他几个频道。单击下面的日志链接查看列表。
聊天记录
聊天频道(通常)是公开记录和可搜索的。十几个矿山含有大约一百万颗未经加工的钻石——自2005年以来,Rakoons和访问者不断实时发表评论。
从许多方面来说,搜索这些日志比谷歌搜索(这通常是无用的)要丰富得多。例如,在文档网站上搜索\Q
(一个与Raku等效的Perl转义)的匹配项,列出了50个误报,只有一个真阳性,而在旧的Raku频道中搜索\Q
会显示一长串匹配项,我对它们的简要回顾表明其中许多是有用的。
搜索功能包括按nick过滤。例如,通过TimToady
(Larry Wall)搜索包含单词宏
的注释。
你甚至可以使用Raku正则表达式!(如果你这样做了,请深思熟虑。例如,为了避免超时,你可能需要将搜索分成多个提交,每个提交的跨度不到15年。)
总之,您不仅可以搜索近20年的Rakoons和非Rakoon访问者,他们开着难以想象的可怕玩笑,同时富有成效地讨论每一点代码(在Raku或任何其他PL中)和任何人都愿意讨论的每一个Raku主题,还可以精确搜索以保持高信噪比。
Doc如果您想搜索和阅读留档,请按照下面的指南从主要文档网站doc.raku.org快速获得许多问题的答案:
>
搜索文档站点的搜索框(网站右上角)比看起来更有用。您可能不知道要输入什么。即使您知道要输入什么,它也可能不在文档中。即使它在文档中,它也可能不包含在匹配项的下拉列表中。但是您仍然应该尝试,因为在下拉列表的最底部(在所有列出的匹配项之后)列出了一个经常被忽视的“搜索整个站点”选项。
例如,如果您在搜索框中键入条件
,并选择“搜索整个站点的条件”条目,您将在文档站点上看到与google相同的匹配项。如果您随后浏览它们,您将看到
BTW,如果搜索不适合您,请随时提供有关您尝试和未能找到的反馈。(如果你这样做了,谢谢。)
阅读有时搜索不会给你答案,但它仍然值得阅读文档,因为你只是在搜索框中没有使用正确的单词。要快速访问文档网站中与您的问题相关的最重要部分——尤其是如何将其他PL的知识传授给拉库——单击文档网站顶部绿色区域的语言一词。这将带您进入拉库语言选项卡,其中包含以下重要信息:
>
有“Language X to Raku”迁移指南,展示了如何在Raku中做一些相当于在其他PL中做的事情。你绝对应该利用Perl to Raku指南。(我们也很感激关于它的反馈。)到目前为止,它分为六个部分;你应该从Perl to Raku指南开始——简而言之。在里面,你会看到一个特殊的匹配器通常属于
(?{condition)) yes-pattern | no-pattern # Perl
becomes
<?{condition}> yes-pattern | no-pattern # Raku
还有详细的语言参考信息。语言选项卡的基本主题部分包括一个正则表达式页面;在其中,您会发现一个正则表达式布尔条件检查部分,其中包含一个完全专用于您所询问的内容的整个部分。
当然还有更多的资源(尤其是旧的设计推测文档),但希望上面的内容能帮助你更快地找到许多问题的答案。祝你好运!
这将工作:
my $F=1
'foobar' ~~ / ^^ "{ $F ?? "foo" !! "bar" }" bar /; # 「foobar」
$F=0
'foobar' ~~ / ^^ "{ $F ?? "foo" !! "bar" }" bar /; # Nil
正则表达式中的代码块将被运行,但除非您将它们显式转换为字符串(通过引号),否则它们将被丢弃。