如何在前瞻断言中使用捕获组?
这段代码:
say "ab" ~~ m/(a) <?before (b) > /;
返回:
「a」
0 => 「a」
但我期待也能捕捉到'b'。
有没有办法这样做?
我不想将 'b' 留在前瞻之外,因为我不希望 'b' 成为比赛的一部分。
有没有办法捕获'b'但仍将其留在比赛之外?
笔记:
我尝试使用 Raku 的捕获标记,如下所示:
say "ab" ~~ m/<((a))> (b) /;
「a」
0 => 「a」
1 => 「b」
但这似乎不像我预期的那样工作,因为即使“b”被留在比赛之外,正则表达式已经处理了“b”。而且我也不想被处理。
例如:
say 'abab' ~~ m:g/(a)<?before b>|b/;
(「a」
0 => 「a」
「b」
「a」
0 => 「a」
「b」)
# Four matches (what I want)
say 'abab' ~~ m:g/<((a))>b|b/;
(「a」
0 => 「a」
「a」
0 => 「a」)
# Two matches