On 10/29/22 19:16, William Michels via perl6-users wrote:
In the Raku REPL:
$ raku
Welcome to Rakudo™ v2022.07.
Implementing the Raku® Programming Language v6.d.
Built on MoarVM version 2022.07.
To exit type 'exit' or '^D'
[0] > #beginning
Nil
[1] > my Str $y="xxxxxx"; S/^ x ** 2 /QQ/.say given $y;
QQxxxx
[1] > #inner
Nil
[2] > my Str $y="xxxxxx"; S/^ [x ** 2] <(x ** 2)> /QQ/.say given $y;
xxQQxx
[2] > #end
Nil
[3] > my Str $y="xxxxxx"; S/ x ** 2 $/QQ/.say given $y;
xxxxQQ
Thank you!
From my notes:
Picking out things in the beginning `^`, the middle `<(x ** 1)>`,
and the end `$`:
[0] > my Str $y="xxxxxx"; $y ~~ s/ .*? "x"/Q/; print "$y\n";
Qxxxxx
[0] > my Str $y="xxxxxx"; $y ~~ s/ ^ x ** 2 /Q/; print "$y\n";
Qxxxx
[0] > my Str $y="xxxxxx"; $y ~~ s/ ^ x ** 2 <(x ** 1)> /Q/; print "$y\n";
xxQxxx
[0] > my Str $y="xxxxxx"; $y ~~ s/ ^ x ** 2 <(x ** 3)> /Q/; print "$y\n";
xxQx
[0] > my Str $y="xxxxxx"; $y ~~ s/ x ** 2 $ /Q/; print "$y\n";
xxxxQ
Regex with "S" (capitol "S"):
"S" does not alter the string, but returns the result.
Note that you have to use "given" to make this work
[0] > my Str $y="xxxxxx"; print S/^ x ** 2 /QQ/ given $y ~ "\n";
QQxxxx
[0] > my Str $y="xxxxxx"; print S/^ [x ** 2] <(x ** 2)> /QQ/ given $y ~
"\n";
xxQQxx
[0] > my Str $y="xxxxxx"; print ( S/ x ** 2 $/QQ/ given $y ) ~ "\n";
xxxxQQ
[0] > my Str $y="xxxxxx"; print ( $y ~~ S/ x ** 2 $/QQ/ ) ~ "\n";
Potential difficulties:
Smartmatch with S/// is not useful. You can use given instead: S///
given $foo
------> my Str $y="xxxxxx"; print ( $y ~~ ⏏S/ x ** 2 $/QQ/ ) ~ "\n";
xxxxQQ