Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

Re^3: cleaving a sequence with specific alphabets

by mwah (Hermit)
on May 21, 2008 at 12:10 UTC ( #687755=note: print w/replies, xml ) Need Help??

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

You won't need capturing parentheses when evaluating in list context. Afaik does the .*? invoke a speed penalty, so that the expression might be optimized as:

... my @arr = $string =~ / [^KR]+ # collect non K|R . # the following must be K|R (?!P) # ignore if fragment would start by P /gsx; ...



Replies are listed 'Best First'.
Re^4: cleaving a sequence with specific alphabets
by tachyon-II (Chaplain) on May 21, 2008 at 16:30 UTC

    This is broken, not optimised. The .*? was there for a reason.

    $string = "RYOURPOSTBROKEN";
      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

        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!



Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://687755]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (3)
As of 2021-04-16 22:20 GMT
Find Nodes?
    Voting Booth?

    No recent polls found