gpt4 book ai didi

raku - 在 Perl 6 中使正则表达式完全匹配零个字符的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 23:14:33 24 4
gpt4 key购买 nike

如何显式定义 regex (编号或命名的捕获组),始终与零个字符完全匹配?

> "abc" ~~ m/()abc/
===SORRY!=== Error while compiling:
Null regex not allowed

> my regex null {}
===SORRY!=== Error while compiling:
Null regex not allowed

> my regex null {<[]>}
regex null {<[]>}
> "abc" ~~ m/<null>abc/
False

当然,我可以使用以下类似的方法,但我正在寻找一种惯用的方法。

> my regex null {a ** 0}
regex null {a ** 0}
> "abc" ~~ m/<null>abc/
「abc」
null => 「」

UPD:这是有效的,但这是最好的方法吗?

> my regex null { '' }
regex null { '' }
> "abc" ~~ m/<null>abc/
「abc」
null => 「」
> "abc" ~~ m/('') abc/
「abc」
0 => 「」

最佳答案

总是成功并匹配 0 个字符的断言是:<?> .

例如:

say so 'foo' ~~ / <?> 'foo' /;
# output: True

正如 raiph 所指出的,总是失败的相应否定版本是 <!> .如果输入有效,当不应该到达解析的一部分时,我已经使用它来插入错误消息。正则表达式的那部分可能是:
\d || [ { note "Error: the previous token must be followed by a number."; } <!> ]

关于raku - 在 Perl 6 中使正则表达式完全匹配零个字符的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46973291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com