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



Reply via email to