如何在前瞻断言中使用捕获组?
这段代码:
say "ab" ~~ m/(a) <?before (b) > /;
Run Code Online (Sandbox Code Playgroud)
返回:
?a?
0 => ?a?
Run Code Online (Sandbox Code Playgroud)
但我期待也能捕获'b'。
有没有办法这样做?
我不想将 'b' 留在前瞻之外,因为我不想让 'b' 成为比赛的一部分。
有没有办法捕获“b”但仍将其留在比赛之外?
笔记:
我尝试使用 Raku 的捕获标记,如下所示:
say "ab" ~~ m/<((a))> (b) /;
?a?
0 => ?a?
1 => ?b?
Run Code Online (Sandbox Code Playgroud)
但这似乎并没有像我期望的那样工作,因为即使 '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?)
# …Run Code Online (Sandbox Code Playgroud)