in reply to Re: Recommendations for breaking up string?
in thread Recommendations for breaking up string?

A extractive variation. This approach assumes that a position ('QB', 'RB', etc.) cannot be confused with the second or any subsequent field of a player's name.

c:\@Work\Perl>perl -wMstrict -MData::Dump -le "my $str = 'QB Carson Palmer RB Chris Ivory RB Eddie Lacy WR A. J. Gre +en ' . 'WR John Brown WR WR Grace WR Pele TE Billy Bob Bennett ' . 'FLEX A.P. Hill DST Panthers'; print qq{[[$str]]}; ;; my $result = {}; ;; my $position = qr{ \b (?: QB | RB | WR | TE | FLEX | DST) \b }xms; my $player = qr{ \S+ (?: \s+ \S+)*? }xms; ;; while ($str =~ m{ ($position) \s+ ($player) (?= \s+ $position | \z) } +xmsg) { ;; my ($posn, $name) = ($1, $2); ;; push @{$result->{$posn}}, $name; ;; } ;; dd $result; " [[QB Carson Palmer RB Chris Ivory RB Eddie Lacy WR A. J. Green WR John + Brown WR WR Grace WR Pele TE Billy Bob Bennett FLEX A.P. Hill +DST Panthers]] { DST => ["Panthers"], FLEX => ["A.P. Hill"], QB => ["Carson Palmer"], RB => ["Chris Ivory", "Eddie Lacy"], TE => ["Billy Bob Bennett"], WR => ["A. J. Green", "John Brown", "WR Grace", "Pele"], }
The  $player regex could be refined to make it more discriminative of human names, but that's always tricky.


Give a man a fish:  <%-{-{-{-<