Using a set would be good but it doesn't give you the matching string from
the original (which is what I thought was required) otherwise Sets would be
my first thought.

On Sun, 1 Sep 2019, 17:57 William Michels, <w...@caa.columbia.edu> wrote:

> Hi Yary and Paul and Simon,
>
> I ran into the same difficulties as Yary with repeated characters, so
> I tried the .unique method. Then after a while, I realized that
> problems like this might best be treated as "Set" problems in Perl6.
> Note the Set Intersection operator "(&)" below:
>
> sub matching_chars(Str $a, Str $b) {
>    my @c = $a.comb.unique;
>    my @d = $b.comb.unique;
>    #say @c; say @d;
>    return @c (&) @d;
> }
>
> say matching_chars("24680", "19584203"); #RETURNS set(0 2 4 8)
> say matching_chars('+\/\]\[', 'Apple ][+//e'); #RETURNS set(+ / [ ])
>
>
> https://docs.perl6.org/routine/Set
> https://docs.perl6.org/language/operators#infix_(&),_infix_∩
>
> HTH, Bill.
>
>
> On Sat, Aug 31, 2019 at 8:59 PM Paul Procacci <pproca...@gmail.com> wrote:
> >
> > I'm not entirely sure if this is the correct answer, but if you define
> your own custom character class
> > with a 'regex' object, you can use that in the grouping.
> >
> > sub matching_chars(Str $chars_to_match, Str $_) {
> >     my regex x { $chars_to_match ** 1 };
> >     m/<[<x>]>/;
> > }
> >
> > The above worked for me in the very small testing I did.
> >
> > ~Paul
> >
> > On Sat, Aug 31, 2019 at 9:54 PM yary <not....@gmail.com> wrote:
> >>
> >> I found something easy in Perl 5 that's puzzling me in Perl 6-
> specifying a character class via a variable.
> >>
> >> Perl 5:
> >> sub matching_chars {
> >>   (my $chars_to_match, local $_) = @_;
> >>   /([$chars_to_match]+)/
> >> }
> >>
> >> say matching_chars('24680', '19584203'); # says 8420
> >> say matching_chars('+\/\]\[', 'Apple ][+//e'); # says ][+//
> >>
> >> Perl 6:
> >> sub matching_chars(Str $chars_to_match, Str $_) {
> >>     # warnings, treats as string not variable
> >>     m/<[$chars_to_match]>/;
> >> }
> >>
> >> How do I get Perl 6 to interpret a variable in the contents of a
> character class?
> >> From http://docs.perl6.org/language/regexes#Regex_interpolation I'd
> think that  Rakudo would use the literal contents of $chars_to_match,
> instead it's using the literal chars "$ c h a r s _ t o _ m a t c h" and
> warning about repeated c, underscore, etc.
> >>
> >> -y
> >
> >
> >
> > --
> > __________________
> >
> > :(){ :|:& };:
>

Reply via email to