On Tue, May 1, 2018 at 3:54 PM Simon Proctor <simon.proc...@gmail.com <mailto:simon.proc...@gmail.com>> wrote:

    So what you what to match is a followed by zero or more not a's and
    then the end of the string.

    <[a]> is the perl6 regex for a range comprising of a alone you can
    negate that like so <-[a]>

    Giving us

    perl6 -e 'my $x="abcabcabc"; $x ~~ s/a <-[a]>* $/xyz/; say $x;'

    (There's probably a better way, this was just my first attempt)

    On Tue, 1 May 2018 at 14:37 ToddAndMargo <toddandma...@zoho.com
    <mailto:toddandma...@zoho.com>> wrote:

        Hi All,

        I am trying to change the last three letters of a string

        $ perl6 -e 'my $x="abcabcabc"; $x ~~ s/"a.*"$/xyz/; say $x;'
        abcabcabc

        I want abcabcxyz

        And, in real life, only the "a" will be a know letter.
        Everything else will vary.  And the "a" will repeat a lot.
        I am only interested in changing the last "a" and everything
        that comes after it.

        Many thanks,
        -T

On 05/01/2018 09:03 AM, Fernando Santagata wrote:
I guess there are more ways to do that than I can count :-)

These two don't use a regex:

($a.comb)[0..^*-3].join ~ 'xyz'; # replace the last three letters of a string

$a.subst: 'abc', 'xyz', :3rd; # replace the third occurrence of 'abc'


only the "a" will be consistent.  The string could look like
   abcadksavssa234      expected result  abcadksavssxyz
   askfsssalwekjarrsvs  expected result  askfsssalwekjxyz

Reply via email to