相关疑难解决方法(0)

为什么/如何将重复的任意性格与捕获组匹配需要一个附加变量?

我使用perl6正则表达式匹配长度最小的重复任意字符序列。

阅读完https://docs.perl6.org/language/regexes#Capture_numbers并调整给出的示例后,我使用“外部变量”提出了以下代码:

#uses an additional variable $c
perl6 -e '$_="bbaaaaawer"; /((.){} :my $c=$0; ($c)**2..*)/ && print $0';

#Output:  aaaaa
Run Code Online (Sandbox Code Playgroud)

为了帮助说明我的问题,在perl5中使用了类似的正则表达式:

#No additional variable needed
perl -e ' $_="bbaaaaawer"; /((.)\2{2,})/ && print $1';
Run Code Online (Sandbox Code Playgroud)

有人可以启发我“储蓄” $0$c空缺的需求/好处{}吗?是否有匹配的替代(更好/类似)的perl6正则表达式?

提前致谢。

regex perl6

11
推荐指数
2
解决办法
280
查看次数

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
查看次数

标签 统计

regex ×2

perl6 ×1

raku ×1

rakudo ×1

regex-group ×1

regex-lookarounds ×1