相关疑难解决方法(0)

Raku 正则表达式:如何在前瞻中使用捕获组

如何在前瞻断言中使用捕获组?

这段代码:

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)

regex rakudo regex-group regex-lookarounds raku

8
推荐指数
1
解决办法
159
查看次数

标签 统计

raku ×1

rakudo ×1

regex ×1

regex-group ×1

regex-lookarounds ×1