in reply to Re^4: cleaving a sequence with specific alphabets
in thread cleaving a sequence with specific alphabets

That snippet shows that yours is broken too. It doesn't return the last segment ("EN").
my $string = "RYOURPOSTBROKEN"; print("input: $string\n"); print("expecting: R YOURPOSTBR OK EN\n"); print("\n"); { # mwah (split) my $re = qr/(?<=[KR])(?!P)/; my @arr = split $re, $string; print("split $re: @arr\n"); } { # tachyon-II (re) my $re = qr/(.*?[KR])(?!P)/s; my @arr = $string =~ /$re/g; print("$re: @arr\n"); } { # mwah (re) my $re = qr/[^KR]+.(?!P)/s; my @arr = $string =~ /$re/g; print("$re: @arr\n"); }
input: RYOURPOSTBROKEN expecting: R YOURPOSTBR OK EN split (?-xism:(?<=[KR])(?!P)): R YOURPOSTBR OK EN (?s-xim:(.*?[KR])(?!P)): R YOURPOSTBR OK (?s-xim:[^KR]+.(?!P)): YOU POSTBR OK EN (?s-xim:[^KR]*.(?!P)): R YOU POSTBR OK EN

Replies are listed 'Best First'.
Re^6: cleaving a sequence with specific alphabets
by mwah (Hermit) on May 21, 2008 at 17:21 UTC

    Oh well, I made a mistake (better really test the code next time).

    I couldn't come up with a solution dropping the .*?, so Tachyon-II's solution only needs a slight modification ...

    ... my @arr = $string =~ / .*? [KR] (?!P) | [^KR]+$ /gx; ...

    ... for getting the strings tail.

    Thanks for checking this!

    Regards

    mwa

      That'll learn me ;-) Testing OPs code and not my own! Thanks for fixing it and pointing out you don't need the ( ).

      cheers