Ooh. That's embarassing. I didn't pay close enough attention to the OP. Some of the
inside matches contain spaces. My regex should have been:
/^\S+\s+(.+)\s+/
which would match:
* the beginning of the line (^)
* followed by one or more non-whitespace characters (\S+)
* followed by one or more whitespace characters (\s+)
* followed by one or more of any characters including whitespace (.+)
* followed by one or more whitespace characters (\s+)
because Perl will match the largest possible number of characters, the .+ will match
everything between the two outside spaces.
-----Original Message-----
From: Tim Johnson
Sent: Thu 1/22/2004 9:31 PM
To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
Cc:
Subject: RE: Need help with a regex
Try this on for size:
#####################
use strict;
use warnings;
my @cities = ();
open(INFILE,"myfile.txt") || die "Couldn't open myfile.txt for reading!\n";
while(<INFILE>){
$_ =~ /^\S+\s+(\S+)/;
push @cities,$1;
}
#do something to @cities
#####################
which basically means to match:
* the start of the line (^)
* followed by one or more non-whitespace characters (\S+)
* followed by one or more whitespace characters (\s+)
* followed by one or more non-whitespace characters (\S+)
the parentheses around the last non-whitespace match assign it to $1
Note: Check out "perldoc perlre" for the man pages. It might be worth
looking over real quick before you dig into the book.
Or, for the quick and easy way without a regex, how bout:
#############################
use strict;
use warnings;
my @cities;
open(INFILE,"myfile.txt") || die "Could not open myfile.txt for reading!\n";
while(<INFILE>){
push @cities,(split /\s+/,$_)[1];
}
#############################
which does a split on the line and returns the second element of the resulting
list and assigns it to @cities.
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Thu 1/22/2004 9:01 PM
To: [EMAIL PROTECTED]
Cc:
Subject: Need help with a regex
This newbie needs help with a regex. Here's what the data from a text
file looks like. There's no delimiter and the fields aren't evenly
spaced
apart.
apples San Antonio Fruit
oranges Sacramento Fruit
pineapples Honolulu Fruit
lemons Corona del Rey Fruit
Basically, I want to put the city names into an array. The first
field,
the fruit name, is always one word with no spaces.