提问者:小点点

插入的Raku条件代码正则表达式


如何在Raku regex
中插入条件代码正则表达式作为其Perl正则表达式的模拟

 my $F = 1;
 'foobarbar' =~ / (?(?{  $F  }) foo |  bar ) bar /x  ;

请帮助后,努力了一天,无济于事,谢谢。


共2个答案

匿名用户

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
    

    正则表达式中的代码块将被运行,但除非您将它们显式转换为字符串(通过引号),否则它们将被丢弃。