--- "Randy W. Sims" <[EMAIL PROTECTED]>
wrote:
> On 03/12/04 08:18, Stuart White wrote:
> > I like the idea of using split() but decided to
> keep
> > most of my regex and incorporate split on the
> string.
> > So the string: 'Spurs 94, Suns 82' <-and there may
> or
> > may not be a space after the 2.
> > I decided to read up on split(), and then try to
> split
> > it.
> 
> The split function consumes (throws away) the part
> of the string that 
> matches the regular expression used as the first
> argument, so that it no 
> longer appears in the result. For example, let's say
> that
> 
> $line = 'Spurs 94, Suns 82';
> 
> if we use split like
> 
> @result = split /,/, $line;
> 
> I.e. if we split $line on comma, then result will
> contain:
> 
> $result[0] = 'Spurs 94'
> $result[1] = ' Suns 82'
> 
> Notice that the combination of the two elements
> would produce the 
> original string without the comma. In particular,
> notice that a space 
> remains in front of the second element. If we want
> to remove spaces on 
> either side of the comma, we can add it to the regex
> like:
> 
> @result = split /\s*,\s*/, $line;
> 
> which will give us
> 
> $result[0] = 'Spurs 94'
> $result[1] = 'Suns 82'
> 
> Now we can take each of the results and split on a
> space (or any number 
> of spaces) to process each teams score:
> 
> foreach my $teamscore (@result) {
>    my ($team,$score) = split /\s+/, $teamscore;
>    print "Team: $team, Score: $score\n";
> }
> 
> This would take each of the two elements in @result
> from above in turn 
> and split on one-or-more-spaces, so that the first
> iteration of the loop 
>   would print:
> 
> Team: Spurs, Score: 94
> 
> and the second iteration will produce:
> 
> Team: Suns, Score: 82
> 
> Does that help clarify the way split works?
> 

Wow, yeah that helps a lot.
Here's a question: If if had: 
$line = 'Spurs 94, Suns 82, Heat 99, Magic 74'
 and then did a split on comma and comma's surrounding
spaces:
@result = split (/\s*,\s*/, $line);
then @result would look like this, right?
@result[0] = 'Spurs 94'
@result[1] = 'Suns 82'
@result[2] = 'Heat 99'
@result[3] = 'Magic 74'

If I wanted to split on the numbers as well, why
doesn't this work:
@result = split (/\s*\d*,\s*\d*/, $line);

I just had a thought, it have to look more like:
@result = split (/(\s*|\d*),\s*\d*/, $line);

I'm confusing myself, but when I get home, I'll try
out what you've shown me.  That might be the way to do
it.

> Randy.


__________________________________
Do you Yahoo!?
Yahoo! Search - Find what you’re looking for faster
http://search.yahoo.com

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to