This is similar to Wiggins, except it checks to make sure that
A. We have a two word sequence
B. We don't have a comma
These are still very basic levels of processing, though - Wiggins is right that we
would need to see a more thorough example of data ranges to know exactly what to
offer. Tested, the results of this were that the program printed "SD" and exited as
expected. Case sensitivity/insensitivity matching isn't required since \w will match
either upper or lower case characters.
my $name = "SARA DEILY";
if (($name =~ /\w+\s+\w+/) and ($name !~ /,/)) {
chomp($name);
if ($name =~ /^(\w{1})\w*\s+(\w{1})\w*$/) {
my $initials = join ("", $1 . $2);
print $initials . "\n";
}
else {
print "Something\'s wrong here: $!\n";
}
}
else {
# do more processing on different types of entries
print "Doh!";
exit;
}
-----Original Message-----
From: Wiggins d'Anconia [mailto:[EMAIL PROTECTED]
Sent: Sunday, July 20, 2003 7:10 PM
To: Sara
Cc: org
Subject: Re: Regex problem
Sara wrote:
> $name = "SARA DEILEY";
>
> how its possible to grasp only initials for First and Last name i.e $name ="SD"??
>
Depends on how standardized your data is, something simple like this
should work for the above:
my $name = 'SARA DEILEY';
my $initials;
if ($name =~ /^(\w)\w*\s+(\w)\w*/) {
$initials = $1 . $2;
print "Initials: $initials\n";
}
else {
die "Can't determine initials: $name";
}
But this presents a number of problems, for instance people with 2
"first names", and you will have to decide what to do with names like
McDonald, or if your data can be entered by humans, what if someone
enters: "Deiley, Sara", etc.
You might also consider using 'split' and 'substr' instead of using a regex.
Either way you need to provide more info about your possible data set
range if the above is not sufficient.
http://danconia.org
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]