My current expectations are a little different than any others previously expressed and I don't know how to get the result. I am no longer considering named captures from Regex's interpolated inside <angle brackets> and am now looking at directly interpolating them.
Perl example: DB<1> *$word = qr/(\w+)/;* DB<2> *$AwithB = qr/$word with $word/* DB<3> *$_ = 'Interpolating regexes with arbitrary captures is fun!'* DB<4> *x /$AwithB.*is $word/* 0 'regexes' 1 'arbitrary' 2 'fun' That was simple and I like the results of the capture groups being first-level. Raku example: my $word = /(\w+)/; my $AwithB = /$word' with '$word/; $_= 'Interpolating regexes with arbitrary captures is fun!'; say "Nested rx"; dd m/$AwithB.*'is '$word/; say "shallow rx"; dd m/$word' with '$word.*'is '$word/; say "no interpolation"; dd m/(\w+)' with '(\w+).*'is '(\w+)/; # code end results below Nested rx Match $/ = Match.new(:orig("Interpolating regexes with arbitrary captures is fun!"), :from(14), :pos(52)) shallow rx Match $/ = Match.new(:orig("Interpolating regexes with arbitrary captures is fun!"), :from(14), :pos(52)) no interpolation Match $/ = Match.new(:orig("Interpolating regexes with arbitrary captures is fun!"), :from(14), :pos(52), :list((Match.new(:orig("Interpolating regexes with arbitrary captures is fun!"), :from(14), :pos(21)), Match.new(:orig("Interpolating regexes with arbitrary captures is fun!"), :from(27), :pos(36)), Match.new(:orig("Interpolating regexes with arbitrary captures is fun!"), :from(49), :pos(52))))) Run against Welcome to ๐๐๐ค๐ฎ๐๐จโข v2021.02.1. Implementing the ๐๐๐ค๐ฎโข programming language v6.d. Built on MoarVM version 2021.02. What I see from that example code is Raku matching all the regex's as I expect regardless of nesting them, all without the named capture grouping angle-brackets. Which is what the documentation suggests from its example- my $string = 'Is this a regex or a string: 123\w+False$pattern1 ?'; my $regex = /\w+/; say $string.match: / $regex /; # [4] OUTPUT: ยซ๏ฝขIs๏ฝฃโคยป Where my expectation differs from the behavior in my example is Raku's discarding the capture groups of the interpolated regexes. The overall match works, in all cases :from(14) to :pos(52), but Raku treats the groupings inside the interpolations as non-capturing. -y On Thu, Mar 18, 2021 at 6:08 PM Ralph Mellor <ralphdjmel...@gmail.com> wrote: > On Thu, Mar 18, 2021 at 12:59 AM yary <not....@gmail.com> wrote: > > > > As it is I get same kinds of errors in the REPL, perhaps it is MacOS > > with Linenoise that's mucking that up. > > I can confirm your new test code also works fine in both program > and repl forms in 2020.12. > > Though obviously the case you mark as "interesting" still doesn't do > any sub-capturing. Which is to be expected if you know that aspect > of Raku's regex language. > > > I had hoped that by directly interpolating $rd and $rw they would > > fill in the top-level match object and fill in $0, $1 โ but it has the > > same issue as Joe's original example. > > Are you just saying that your original expectations were the same > as Joe's, but you now understand that's not how Raku regexes > work, but it's trivial to get the same result? Or are you saying you > don't know how to get the same result? > > -- > love, raiph >