SPUG: RE / Split Question

John W. Krahn krahnj at acm.org
Thu Jul 31 02:02:11 CDT 2003


On Wednesday 30 July 2003 16:54, Orr, Chuck (NOC) wrote:
>
> Please help with the following dilemma:
>
>      I am being given a glob of data from a web page that I need to
> fix with perl.  It comes in as $blob looking like this:
>
> 425 501 sttlwa01t 425 712 sttlwa01t tacwa02t 425 337 tacwa02t ...
>
> I need to break this up so the word characters associated with the
> numbers stay with their numbers.  Ideally, I would have an array like
> this:
>
> 425 501 sttlwa01t
> 425 712 sttlwa01t tacwa02t
> 425 337 tacwa02t
>
> As you can see, I am not assured of the number of words that will
> follow each set of numbers.  Could you please suggest a split or some
> other tool that will turn the glob into the fix?
> $new_array = [ split /(?=[A-Z]\s\d)/,$scalar ];
>
> Which is as close as we got, does not work.  It keeps the split
> characters, but in a funky way that I cannot deal with.  It also will
> always miss the last chunk of the glob.


How about this?

$ perl -le'
$glob = "425 501 sttlwa01t 425 712 sttlwa01t tacwa02t 425 337 tacwa02t ";

@array = $glob =~ /( \b\d+ \s+ \d+ (?:\s+ \D\w*)+ )/xg;

print for @array;
'
425 501 sttlwa01t 
425 712 sttlwa01t tacwa02t 
425 337 tacwa02t 



John
-- 
use Perl;
program
fulfillment



More information about the spug-list mailing list